y0u_bat

[Go언어] 4. 함수 본문

프로그래밍/Go언어

[Go언어] 4. 함수

유뱃 2016. 1. 8. 15:06


함수

func sum(a int, b int) {

fmt.Println(a+b)

}



func sum(a int, b int) int {   // int형으로 리턴값이 반환됨

return a+b

}


func sum(a int, b int) (c int) {      // 리턴값이 c라는 변수임.

c = a+b

return

}


func sum(a int, b int) (int,int) {   // 리턴값이 2개

return a-b,a+b 

}


func sum(a int, b int) (c int,d int) {  

c = a-b

d = a+b 

return 

}


a,b := sum(1,3) 이런식으로 받으면 리턴값이 순서대로 a,b에 들어감.



가변인자

func sum(n ...int) int {

t := 0

for _,v := range n {

t += v

}    

return t

}


func main() {

n := []int{1,2,3,4,5,6,7,8,9,10}

fmt.Println(sum(n...))

}


결과: 55


재귀함수

func fact(n uint64) uint64 {

if n == 0 {

return 1

}


return n * fact(n-1)

}


func main() {

fmt.Println(fact(10))

}


결과: 3628800


함수를 변수에 담기


func sum(a int,b int) int {

return a+b

}


func diff(a int,b int) int {

return a-b

}


var t1 func(a int,b int) int = sum

t2 := sum

t3 := []func(a int,b int) int{sum,diff}

t4 := map[string]func(int,int) int {

"sum": sum

"diff": diff,

}


fmt.Println(t1(1,2))

fmt.Println(t2(1,2))

fmt.Println(t3[0](1,2))

fmt.Println(t3[1](1,2))

fmt.Println(t4["sum"](1,2))

fmt.Println(t4["diff"](1,2))


결과: 3\n4\n3\n-1\n3\n-1



익명함수

func(매겨변수명 자료형) 리턴값자료형 {} ()


func() {

fmt.Println("test1")

}()


func(t string) {

fmt.Println(s)

}("test2")


r := func(a int,b int) int {

return a+b

}(1,2)

fmt.Println(r)





Comments