개발이야기/GO
GO 변수 / 함수 기본(다중 값 리턴, 다중 인자 받기)
쪼린이
2021. 5. 14. 18:44
처음 배우는 GO의 아주 기초적인 변수와 함수 표현 방식을 적어보려한다.
(노마드 코더 강의의 흐름대로 정리 중)
기본형 작성
func main(){
var name string = "merry"
// name := "merry"
// line 6과 7은 동일한 기능이다.
// ':=' 와 같이 표기하면 GO는 해당 변수 값에 대한 type을 찾아서 정의한다.
// 이 표현은 func 안에서만 가능하다.
name = "charlie"
fmt.Println(name)
}
func multiply(a, b) {
return a * b
}
func main(){
fmt.Println(multiply(2, 2))
}
위와 같이 인자를 넣어 함수를 호출할 경우 에러가 발생한다.
메시지를 보면 파라미터의 타입과 리턴 타입을 표기해주지 않아서 나는 에러이다.
func multiply(a, b int) int {
return a * b
}
func main(){
fmt.Println(multiply(2, 2))
}
올바른 방법은 위와 같이 호출되는 함수 매개변수 옆에 해당 변수의 타입을 적어주고, 중괄호 앞에 리턴 타입을 적어주면 된다.
위의 예시는 a, b 모두 int로 타입을 지정하고 있는데, 만약 다른 타입이라면 'a int, b string'과 같이 따로 적어주면 된다.
다중 값 RETURN
func lenAndUpeer(name string) (int, string) {
return len(name), strings.ToUpper(name)
}
func main() {
totalLength, upperName := lenAndUpeer("goTest")
fmt.Println(totalLength, upperName)
// 6, GOTEST
/*
GO 언어는 사용하지 않는 변수를 선언해놓을 경우 'unused~' 에러가 난다.
만약 다중 값이 리턴되는데 하나의 값만 받고 싶을 경우,
받고 싶지 않은 반환 값을 무시하는 코드를 짜면 되는데 아래와 같다.
*/
totalLength, _ := lenAndUpeer("goTest")
fmt.Println(totalLength)
// 위와 같이 underscore(_)로 표현할 경우 해당 값은 반환되지 않는다.
}
다중 인자 값
func repeatMe(words ...string) {
fmt.Println(words)
}
func main() {
repeatMe("nico", "lynn", "dal", "marl", "flynn")
//[nico lynn dal marl flynn]
}
GO 언어는 JAVA와 다르게 코드 말미에 세미콜론(;)을 안 찍어도 컴파일 에러가 안나서 신기하다.