- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
함수 사용하기
이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07
리턴값 여러 개 사용하기
Go 언어는 함수에서 값을 여러 개 리턴할 수 있습니다. 지금까지 다른 언어들은 함수에서 값을 여러 개 받기 위해 매개변수에서 레퍼런스, 포인터 타입을 사용하거나, 클래스 및 구조체의 인스턴스를 활용하는 등 다양한 방법을 사용했습니다. 하지만 Go 언어는 문법적으로 값을 여러 개 리턴할 수 있으므로 코드가 좀 더 짧고 간단합니다.
- func 함수명(매개변수명 자료형) (리턴값_자료형1, 리턴값_자료형2) { }
이번에는 합과 차를 동시에 리턴하는 함수를 만들어보겠습니다.
func SumAndDiff(a int, b int) (int, int) { // int형 리턴값이 두 개인 함수 정의
return a + b, a - b // 리턴할 값 또는 변수를 차례대로 나열. 합과 차를 동시에 리턴
}
func main() {
sum, diff := SumAndDiff(6, 2) // 변수 두 개에 리턴값 두 개를 대입
fmt.Println(sum, diff) // 8 4: 합과 차
}
8 4
( )
(괄호)안에 리턴값 자료형을 ,
(콤마)로 구분하여 여러 개 지정해주면 됩니다. 함수 안에서 값을 리턴할 때도 return
에 값을 ,
(콤마)로 구분하여 여러 개 지정합니다.
리턴값을 받을 때는 sum, diff :=처럼 변수를 콤마로 구분하여 여러 개 지정합니다. 여기서 리턴값은 함수에서 지정한 순서대로 리턴됩니다. 따라서 리턴값을 받을 변수 하나만 지정하면 첫 번째 리턴값만 저장됩니다.
첫 번째 리턴값은 생략하고 두 번째 리턴값부터 사용하고 싶다면 _ (밑줄 문자)를 사용합니다.
func SumAndDiff(a int, b int) (int, int) {
return a + b, a - b // 리턴할 값 또는 변수를 차례대로 나열
}
func main() {
_, diff := SumAndDiff(6, 2) // 첫 번째 리턴값은 _으로 생략, 두 번째 리턴값만 사용
fmt.Println(diff) // 4: 차
}
4
다음과 같이 리턴값 여러 개 가운데 특정 값만 생략할 수도 있습니다. 리턴값 다섯 개 중에서 첫 번째, 세 번째, 다섯 번째만 사용하고, 나머지는 밑줄 문자를 사용하여 생략합니다.
func hello() (int, int, int, int, int) {
return 1, 2, 3, 4, 5 // 리턴할 값을 차례대로 나열
}
func main() {
a, _, c, _, e := hello() // 2, 4번째 리턴값은 생략
fmt.Println(a, c, e) // 1 3 5
}
값을 여러 개 리턴할 때도 리턴값에 이름을 정할 수 있습니다.
- func 함수명(매개변수명 자료형) (리턴값_변수명1 자료형, 리턴값_변수명2 자료형) { }
func SumAndDiff(a int, b int) (sum int, diff int) { // 리턴값을 각각 sum, diff로 이름을 정함
sum = a + b // 리턴값 변수 sum에 합 대입
diff = a - b // 리턴값 변수 diff에 차 대입
return
}
func main() {
sum, diff := SumAndDiff(6, 2)
fmt.Println(sum, diff) // 8 4
}
8 4
마찬가지로 리턴값 변수에 값을 대입하고 함수의 맨 마지막에 return
을 사용하며 return 뒤에는 리턴할 변수를 지정하지 않습니다.
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.