Programming Language/Go

[Go] Go언어 튜토리얼2_다양한 Func 사용하기

new_challenge 2020. 4. 1. 22:44
반응형

이번 포스팅은 Go언어에서

다양한 func을 만들고 사용하는 튜토리얼 입니다.

 

 

 

 

 

1. Multiple return

- Go 언어가 매력적인 또 하나의 이유는 하나의 func에 여러개의 return을 가질 수 있다.

package main

import (
    "strings"
    "fmt"
)


func lenAndUpper(name string) (int, string) {
    return len(name), strings.ToUpper(name)
}


func main() {
    totalLength, upperName := lenAndUpper("test")
    fmt.Println(totalLength, upperName)
}

>> return이 여러개일 경우 ( )안에 return 타입을 명시하면 됨

 

 

2. Multiple Auguments

- 여러개의 Arguments를 받는 방법은 타입 앞에 ...을 붙이면 됨

- 그러면 원하는 갯수 만큼의 arguments를 보내고 받을 수 있음

package main

import "fmt"

func repeatMe(words ...string) {
    fmt.Println(words)
}

func main() {
    repeatMe("one", "two", "three", "four", "five")
}

>> 출력은 [one two three four five] 처럼 array 형태로 출력된다.

>> 타입 앞에 ...을 붙여주지 않으면 아래와 같은 에러 발생

 

에러 화면

 

 

3. Naked Return

- 아래와 같이 return을 굳이 명시하지 않는 것을 naked return이라고 한다.

- return 할 변수를 굳이 명시하지 않아도 되는 것

package main

import "strings"

func lenAndUpper(name string) (length int, uppercase string) {
    // length와 uppercase라는 변수를 생성 하는 것이 아닌 업데이트
    // 변수 생성은 이미 위에서 명시함
    length = len(name)
    uppercase = strings.ToUpper(name)
    return
}

func main() {
    totalLength, upperName := lenAndUpper("test")
    fmt.Println(totalLength, upperName)
}

>> func 함수 생성 시 return 부분에 변수와 타입을 명시 : 이때 변수가 선언되기 때문에 아래서 선언을 할 필요없이 값만 업데이트 한다.

>> 그럴 경우 return 값을 따로 명시 안해도 되는 데 이를 naked return

 

 

4. defer

- function이 끝났을 때 추가적으로 무엇인가 동작하도록 하는 기능

package main

import "strings"

func lenAndUpper(name string) (length int, uppercase string) {
    #function이 return 되고 나면 실행되는 코드
    defer fmt.Pringln("I'm done")
	
    length = len(name)
    uppercase = strings.ToUpper(name)
    return
}

func main() {
    totalLength, upperName := lenAndUpper("test")
    fmt.Pringln(totalLength, upperName)
}

>> defer을 사용하면 function이 끝난 뒤에 필요한 것을 실행 시킬 수 있다.

>> 예를 들면, 오픈했던 이미지를 닫거나, 파일 생성한것을 삭제하기, API 요청 보내기 등

>> 위 함수를 실행하면 I'm done이 출력된 후에, 4 TEST가 출력된다

반응형