y0u_bat
[Go언어] 4. 함수 본문
함수
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)
'프로그래밍 > Go언어' 카테고리의 다른 글
[Go언어] 6. 포인터 (0) | 2016.01.08 |
---|---|
[Go언어] 5. 클로저,지연호출,패닉과 복구 (0) | 2016.01.08 |
[Go언어] 3. map, 부분 슬라이스 (0) | 2016.01.07 |
[Go언어] 2. if,for문,배열 (0) | 2016.01.06 |
[Go언어] 1. hello world !! (변수,상수,연산자) (0) | 2016.01.06 |