2014-05-19 3 views
2

, swap 여러 값을 반환하는 함수를 감안할 때, 그리고 랬 내가 수정할 수없는 API의 일부 :여러 개의 반환 값이있는 함수 호출에서 특정 값만 가져 옵니까?

package main 

import "fmt" 

func swap(x, y string) (string, string) { 
    return y, x 
} 

func main() { 
    a, b := swap("hello", "world") 
    fmt.Println(a, b) 
} 

두 번째를 폐기, swap 기능을 사용하여 첫 번째 반환 값을 얻을하는 것이 가능 하나? 나는이 시도 :

func main() { 
    a, b := swap("hello", "world") 
    fmt.Println(a) 
} 

ERROR: prog.go:10: b declared and not used [process exited with non-zero status] 

을 그리고이 너무 수 없습니다 : 나는 모든 반환 된 부품이 필요하지 않을 때

a := swap("hello", "world") 

ERROR: prog.go:10: multiple-value swap() in single-value context 

어떻게 여러 값을 반환하는 함수를 다루는? 자동으로 경고가 발생하지 않고 폐기 된 빈 식별자에 할당

a, _ := swap("hello", "world") 

모든 :


코드는 "A tour of go - lesson 9"

답변

9

를 사용하여 빈 식별자 _을 기반으로합니다. 또한 구조에 패딩을 추가 할 빈 식별자를 사용할 수 있습니다

struct { 
    a byte 
    b byte 
    c byte 
    _ byte // padding 
} 

빈 식별자의 또 다른 사용은 전역 변수 초기화 할 때 반환 값을 폐기하는 것입니다

var foo, _ = foo.NewFoo() // ignore error returned by NewFoo() 

그리고 단 하나 개의 값을 범위는 필수입니다.

for _, v := range mySlice { } 
+0

고마워요! 좋은 패딩 트릭 BTW. – marcio

관련 문제