go 언어에서 함수 리턴 타입을 적을 때 ()을 사용할 때 튜플을 표현하지 않는다. 그저 묶음 표현일 뿐이다. 


스칼라에 익숙한 개발자라면 놓칠 수 있는 내용인데,.. 사실 go에는 튜플이 없다...



package main

import "fmt"


func main() {

   fmt.Println(add(1,2))

   x, y := add(1,2)

   fmt.Println(x, y)


   fmt.Println(minus(2,1))

}


func add(x int, y int) (int, int) {

  return x + y, x - y

}



func minus(x int, y int) (int) {

  return x - y

}



결과는 다음과 같다. 


3 -1

3 -1

1



함수의 매개변수를 정의할 때 (x int, y int)를 (x, y int)로 바꿔 사용할 수도 있다. 




func add(x, y int) (int, int) {

  return x + y, x - y

}



func minus(x, y int) (int) {

  return x - y

}






함수의 리턴 타입을 정의할 때 변수명을 지정할 수 있다. 함수 내부에서 바인딩되게 하고 리턴할 때 값을 특별히 지정하지 않아도 된다. 


package main
import "fmt"

func main() {
   fmt.Println(split(1))
}

func split(x int) (y, z int) {
  y = x + 2
  z = x + 10
  return
}


결과는 다음과 같다.

3 11


Posted by '김용환'
,