2014-12-05 2 views
2

(here 및 표준 라이브러리 읽기에서 알 수있는 한) 데이터 및 오류를 반환하는 라이브러리에서 오류를 처리하는 관용적 방법.구조체 반환시 오류 처리 이동

질문은 실행하면 오류가 반환됩니다. 내 데이터로 무엇을 반환합니까? 빈 구조체? 0? 여기

는이 예는 관용적

// Load the config 
func LoadConfig(location string) (Config, error) { 
    // Read the file 
    configFile, err := ioutil.ReadFile(location) 
    if err != nil { 
     return Config{}, err 
    } 

    // Convert it to Config struct 
    var config Config 
    json.Unmarshal(configFile, &config) 
    return config, nil 
} 

입니까?

+0

당신의 질문 외에 (이미 좋은 대답이 있습니다.) 한 가지주의해야 할 점이 있습니다 - 당신의 예제에서는 물론'json.Unmarshal'의 오류도 반환해야합니다. –

+0

@Not_a_Golfer 고마워, 나는 그걸 놓쳤다. – giodamelio

답변

3

상황에 따라 다릅니다. 반환 된 유형이 포인터 인 경우 해당 유형에 대해 빈 값을 반환하거나 nil을 반환 할 수 있습니다. 그러나 함수에 대해 의미가있는 경우 오류와 함께 부분 결과를 반환 할 수도 있습니다. 예를 들어 bufio 패키지의 경우 Reader.ReadString은 문자열과 오류를 반환합니다. docs state :

ReadString은 구분 기호를 발견하기 전에 오류가 발생하는 경우, 그것은 오류 및 오류 자체 (종종 io.EOF) 전에 읽은 데이터를 반환합니다.

+0

고마워, 그게 내가 생각하고 있었던거야. – giodamelio