반응형
1. 리턴값
func sumAndDiff(a int, b int) (int, int){
return a+b, a-b
}
func main() {
sum, diff := sumAndDiff(8, 20)
fmt.Println(sum, diff)
}
func sumAndDiff(a int, b int) (sum int, diff int){
sum = a+b
diff = a-b
return
}
func main(){
add, minus := sumAndDiff(44, 33)
fmt.Println(add, minus)
}
//가변인자 사용하기
func sum(n ...int) int{
total := 0
for _, value := range n{
total += value
}
return total
}
func main(){
r := sum(1,2,3,4,5)
fmt.Println(r)
}
2. 변수에 함수 대입
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(44,55))
fmt.Println(world(44,55))
}
3. 슬라이스에 함수 저장
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](3,7)) // 10출력
fmt.Println(f[1](3,7)) // -4출력
}
4. 맵에 함수 저장
func sum(a int, b int) (total int){
total = a+b
return
}
func diff(a int, b int) (total int){
total = a-b
return
}
func main() {
myMap := map[string]func(int, int) int{
"sum" : sum,
"diff" : diff,
}
fmt.Println(myMap["sum"](44, 55)) //출력 값 : 99
}
5. 익명 함수(클로저)
func main() {
//익명함수
func(){
fmt.Println("first")
}()
func(s string){
fmt.Println(s)
}("second")
//익명함수를 정의함 → 바로 호출하여 리턴값을 변수 s에 저장함
s := func(a int, b int) int{
return a+b
}(1,2)
fmt.Println(s)
}
#위 코드의 출력값
first
second
3
반응형
'백엔드, 기타 > Golang' 카테고리의 다른 글
Golang 3. 2)인터페이스 (0) | 2020.08.20 |
---|---|
Golang 3. 1)포인터와 구조체 (0) | 2020.08.19 |
Golang 2. 함수 2)클로저(closure), 지연호출(defer), 패닉과 복구(panic and recover) (0) | 2020.08.15 |
Golang 1. 기본 문법 2)배열, slice, map (0) | 2020.08.13 |
Golang 1. 기본 문법 1)타입, for, switch문 (0) | 2020.08.13 |