-
[Golang] 명명된 함수형 (Named Function)언어/Golang 2017. 2. 8. 20:48
명명된 자료형과 마찬가지로 함수 또한 사용자가 정의할 수 있습니다.
type BinOp func(int, int) int
두 정수를 넘겨받아 정수 하나를 반환하는 함수형을 BinOp형으로 정의하였습니다. 명명된 함수형도 자료형 검사를 실행합니다.
func Test(f BinOp) { fmt.Println(f(3, 4)) }
위의 함수를 호출할 때, 아래와 같이 호출한다고 가정합니다.
Test(func (a, b int) int { return a+b })
Test는 BinOp형을 인자로 받는데, 호출 시에는 그냥 정수 둘을 받ㄱ 정수 하나를 반환하는 함수를 넘겨줬습니다. 위의 코드는 컴파일 에러를 발생하지 않습니다. func(a, b int) int 자료형이 명명되지 않은 자료형이기 때문입니다. 양쪽 모두 명명된 자료형이 아니면 서로 간에 호환됩니다.