GO

3. Function

good_cow 2021. 1. 4. 22:23

함수 파라미터의 타입 명시

func multiply(a, b int) result int{
    return a * b
    // a,b 모두 int 타입으로 인식
}

둘 이상의 return 지원

package main

import "fmt"
import "strings"

func doSomething(name string) (length int, upper string) {
    length = len(name)
    upper = strings.ToUpper(name)
    return length, upper
}
func main(){
    length, upper := doSomething("kim")
    fmt.Println(length, upper)
}
// 3 KIM

Naked Return_

Go는 return 타입을 꼭 명시할 필요가 없다. (물론 명시해도 된다)

package main

import "fmt"
import "strings"

func doSomething(name string) (length int, upper string) {
    length = len(name)
    upper = strings.ToUpper(name)
    return
}
func main(){
    length, upper := doSomething("kim")
    fmt.Println(length, upper)
}
// 3 KIM

defer

함수가 끝났을 때, 추가로 무언가를 실행시킬 수 있다. (콜백함수 느낌인듯?)

package main

import "fmt"
import "strings"

func doSomething(name string) (length int, upper string) {
    defer fmt.Println("function done")
    length = len(name)
    upper = strings.ToUpper(name)
    return
}
func main(){
    length, upper := doSomething("kim")
    fmt.Println(length, upper)
}
// function done
// 3 KIM