go 공부를 할 때 아래코드와 같이 int와 string을 return 한다고 코드를 작성했었다.
package main
import (
"fmt"
"strings"
)
func lenAndUpper(name string) (int, string) {
return len(name), strings.ToUpper(name)
}
func main() {
totalLength, upperName := lenAndUpper("jay")
fmt.Println(totalLength, upperName)
}
// 3 JAY
naked return이라고 return 할 변수들을 굳이 꼭 명시하지 않아도 되는데
length, uppercase를 return할 필요가 없는 것이다.
package main
import (
"fmt"
"strings"
)
func lenAndUpper(name string) (length int, uppercase string) {
length = len(name)
uppercase = strings.ToUpper(name)
return length, uppercase // length, uppercase가 필요없음
}
func main() {
totalLength, up := lenAndUpper("nico")
fmt.Println(totalLength, up)
}
즉 아래와 같이 코드를 적어주자.
package main
import (
"fmt"
"strings"
)
func lenAndUpper(name string) (length int, uppercase string) {
length = len(name)
uppercase = strings.ToUpper(name)
return
}
func main() {
totalLength, up := lenAndUpper("nico")
fmt.Println(totalLength, up)
}
또 defer라고 있는데 Go의 아주 멋진 기능이다. defer는 function이 값을 return 하고 나면 실행이 될 것이다.
즉 이미지를 열거나, 파일을 생성하고 나서 defer로 function이 끝났을 때 이미지를 닫거나, 파일을 닫거나, 삭제할 때
API로 요청을 보낼 때 쓰일 수 있다.
즉 defer는 function 끝나고 나서 실행되는 거라고 보면 된다.
package main
import (
"fmt"
"strings"
)
func lenAndUpper(name string) (length int, uppercase string) {
defer fmt.Println("I'm done")
length = len(name)
uppercase = strings.ToUpper(name)
return length, uppercase
}
func main() {
totalLength, up := lenAndUpper("nico")
fmt.Println(totalLength, up)
}
// I'm done
// 3 JAY
<출처 노마드 코더: 쉽고 빠른 Go 시작하기>
https://nomadcoders.co/go-for-beginners/lobby
Watch Now – 노마드 코더 Nomad Coders
nomadcoders.co
'Golang' 카테고리의 다른 글
if & switch (0) | 2021.12.12 |
---|---|
for&range&args (0) | 2021.12.12 |
Functions (1) (0) | 2021.12.11 |
go: cannot find main module error (0) | 2021.12.11 |
Go 들어가기에 앞서 Building 내용 (0) | 2021.12.11 |