2012-11-17 4 views
3

여러 반환 값 중 하나만 반환하는 더 좋은 방법이 있습니까?Go에서 복수 반환 값 중 하나만 반환

func makeRune(s string) (r rune) { 
    r, _ = utf8.DecodeRuneInString(s) 
    return 
} 
+4

아니요. 왜 당신은 오류를 무시하고 있습니까? – tjameson

+1

이 (내부) 함수는 내 코드를 더 짧게 만들 때만 존재합니다. 제 경우의 오류를 무시하는 것은 거의 없습니다. 그러나 이것은 일반적인 예가되어야하며 "간결한 구문으로 오류를 무시하는 방법"이 아닙니다. 예 :-) – deamon

+7

거기에 오류가있을 수 있다고 생각하지 않는다면 잘못된 정보를 캡처하고 패닉시킬 것을 권합니다. . 그렇지 않으면 실제 오류가 발생했을 때 혼란을 겪을 수 있습니다. 오류가 발생하지 않는다고 확신하기 때문에 덮어 버렸을 것입니다. – Dustin

답변

7

예. 왜 이렇게하는지에 대한 설명을 추가해야합니다. 이 일에 대한 동기는 종종 잘못된 것이기 때문에 사람들은 OP에 대한 의견에 대해 질문하므로 질문하게됩니다. 반환 값을 던지기위한 함수를 작성해야하는 좋은 이유가있는 경우 주석에서이를 정당화하십시오. 아마 당신이

// makeRune helper function allows function chaining. 
func makeRune(s string) (r rune) { 
    // toss length return value. for all use cases in this program 
    // only the first rune needs to be decoded. 
    r, _ = utf8.DecodeRuneInString(s) 
    return 
} 

를 작성할 수 이것은 또한 "는 의견과 코드가 동의하지 않을 경우, 모두가 아마 잘못입니다."엄지 손가락의 규칙에 따라 코드 검토를하는 데 도움이 함수 연쇄가 필요하지 않은 경우 함수의 전체 목적은 의문의 여지가 있습니다. 의견에 오류 값을 던지고 있다고 생각되면 빨간색 깃발이 표시됩니다. 귀하의 의견에 s가 단 하나의 룬만을 포함 할 수 있다고 생각한다면 그것은 붉은 깃발이 될 것입니다. 위의 예제 코멘트를 감안할 때 필자가 작성한 내용을 읽고 firstRune이라는 함수의 이름을 더 잘 결정할 수 있습니다. 이는 더 구체적인 의미를 가지며 Go make 기능과 유사한 의미를 제안하지 않습니다.