수색…
설명
0 값 또는 0 초기화는 구현하기 쉽습니다. Java와 같은 언어에서 오는 것은 어떤 값은 nil
가 될 수 있지만 다른 값은 그렇지 않을 수 있다는 점에서 복잡해 보일 수 있습니다. 요약에서 제로 값 : Go 프로그래밍 언어 사양 :
포인터, 함수, 인터페이스, 슬라이스, 채널 및 맵은 nil 일 수있는 유일한 유형입니다. 나머지는 각 유형에 따라 False, 0 또는 빈 문자열로 초기화됩니다.
어떤 조건을 검사하는 기능을 사용하면 문제가 발생할 수 있습니다.
func isAlive() bool {
//Not implemented yet
return false
}
0 값은 구현되기 전에 false가됩니다. 이 기능의 반환에 의존하는 단위 테스트는 위양성 / 음화를 제공 할 수 있습니다.
일반적인 해결 방법은 Go에서 관용적 인 오류를 반환하는 것입니다.
package main
import "fmt"
func isAlive() (bool, error) {
//Not implemented yet
return false, fmt.Errorf("Not implemented yet")
}
func main() {
_, err := isAlive()
if err != nil {
fmt.Printf("ERR: %s\n", err.Error())
}
}
구조체와 오류를 반환 할 때 매우 우아하지 않은 반환을 위해 사용자 구조가 필요합니다. 카운터 옵션에는 두 가지가 있습니다.
- 인터페이스 작업 : 인터페이스를 반환하여 nil을 반환합니다.
- 포인터로 작업 : 포인터 는
nil
수 있습니다.
예를 들어, 다음 코드는 포인터를 반환합니다.
func(d *DB) GetUser(id uint64) (*User, error) {
//Some error ocurred
return nil, err
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow