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가 출력된다
반응형