저작권 안내
- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
함수 사용하기
이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07
함수를 변수에 저장하기
Go 언어는 간단하게 함수를 변수에 저장할 수 있습니다.
- var 변수명 func(매개변수명 자료형) 리턴값_자료형 = 함수명
func sum(a int, b int) int {
return a + b
}
func main() {
var hello func(a int, b int) int = sum // 함수를 저장하는 변수를 선언하고 함수 대입
world := sum // 변수 선언과 동시에 함수를 바로 대입
fmt.Println(hello(1, 2)) // 3: hello 변수에 저장된 sum 함수 호출
fmt.Println(world(1, 2)) // 3: world 변수에 저장된 sum 함수 호출
}
실행 결과
3
3
함수를 정의한 뒤 미리 선언한 변수에 대입하기만 하면 함수를 변수에 저장할 수 있습니다. Go 언어는 변수를 선언하고 대입할 때 자동으로 자료형을 추론할 수 있으므로 :=를 사용하면 간단하게 변수에 함수를 저장할 수 있습니다.
변수뿐만 아니라 슬라이스(배열)에도 함수를 간단하게 저장할 수 있습니다.
- 슬라이스 = []func(매개변수명 자료형) 리턴값_자료형{함수명1, 함수명2}
func sum(a int, b int) int {
return a + b
}
func diff(a int, b int) int {
return a - b
}
func main() {
f := []func(int, int) int{sum, diff} // 함수를 저장할 수 있는 슬라이스를 생성한 뒤 함수로 초기화
fmt.Println(f[0](1, 2)) // 3: 배열의 첫 번째 요소로 함수 호출
fmt.Println(f[1](1, 2)) // -1: 배열의 두 번째 요소로 함수 호출
}
실행 결과
3
-1
[ ]
뒤에 매개변수의 자료형과 리턴값의 자료형을 지정해야 하며 { }
(중괄호) 안에 대입할 함수명을 나열하면 됩니다.
마찬가지로 맵에도 함수를 간단하게 저장할 수 있습니다.
- 맵 := map[키_자료형]func(매개변수명 자료형) 리턴값_자료형{ "키": 함수명 }
func sum(a int, b int) int {
return a + b
}
func diff(a int, b int) int {
return a - b
}
func main() {
f := map[string]func(int, int) int{ // 함수를 저장할 수 있는 맵을 생성한 뒤 함수로 초기화
"sum": sum,
"diff": diff,
}
fmt.Println(f["sum"](1, 2)) // 3: 맵에 sum 키를 지정하여 함수 호출
fmt.Println(f["diff"](1, 2)) // -1: 맵에 diff 키를 지정하여 함수 호출
}
실행 결과
3
-1
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.