명명된 자료형과 마찬가지로 함수 또한 사용자가 정의할 수 있습니다.


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 자료형이 명명되지 않은 자료형이기 때문입니다. 양쪽 모두 명명된 자료형이 아니면 서로 간에 호환됩니다.

+ Random Posts