백엔드, 기타/Golang

Golang 2. 함수 1)함수의 리턴값/ 변수,슬라이스,맵에 함수 대응하기/클로저

데브힐러 2020. 8. 15. 05:35
반응형

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

 

 

 

반응형