수색…


설명

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