1. 함수 기본
func 함수명(변수 type, 변수 type) 결과물 type {} 방식으로 작성해야한다.
결과물 value 항상 작성해줄 필요가 있다.
func multiply(a int, b int) int {
return a * b
}
변수 형태가 둘 다 같으면, 한번만 써도 된다.
func multiply2(a, b int) int {
return a * b
}
여러가지 return type을 가질 때, 이렇게 결과물을 () 처리하고 나오게 한다.
func lenAndUpper(name string) (int, string) {
return len(name), strings.ToUpper(name)
}
그리고 위의 main function에서 볼 수 있듯이, 각각 변수에 집어넣어주면, 각각에 맞춰서 변수에 저장된다.
totalLength, upperName := lenAndUpper("hello")
fmt.Println(totalLength)
fmt.Println(upperName)
결과 :
5
HELLO
변수 파트에서 사악한 Go의 특성을 말했다. 변수를 사용하지 않으면 에러가 뜬다...
두개의 value가 담겨있을 때, 하나 무시하고 싶으면 _로 처리해주자.
total, _ := lenAndUpper("hihi")
_, total2 := lenAndUpper("hellohello")
fmt.Println(total)
fmt.Println(total2)
결과 :
4
HELLOHELLO
2. Naked Function
위의 lenandupper와 같은 함수인데, 뒤에 나오는 int, string 결과물을 거기에서 return 시켜주고 싶어서 쓰는것이다.
func lenAndUpper2(name string) (length int, uppercase string) {
length = len(name)
uppercase = strings.ToUpper(name)
return
}
여기서는 어짜피 자동으로 length랑 uppercase를 위에서 return 값으로 집어넣어주니까
return 값에 뭐 안넣어줘도 그냥 return이 나온다.
원래같으면 return length, uppercase 이렇게 넣어줘야했다.
total, _ := lenAndUpper("hihi")
_, total2 := lenAndUpper("hellohello")
fmt.Println(total)
fmt.Println(total2)
결과 :
4
HELLOHELLO
위와 결과 값은 동일하다.
3. input이 여러개일때
input 값을 여러개 받을 땐 어덯게 할까?
func 함수명(변수 ...type) 으로 하면 된다.
func repeatMe(words ...string) {
fmt.Println(words)
}
그러면 이런 방식으로 넣을 수 있다.
repeatMe("hi", "hello", "annyeong", "okay")
4. for문으로 적용해보자
// loop 문은 항상 for로만 사용가능하다.
func superAdd(numbers ...int) int {
// 각각은 index와 number로 나오고, range는 표현을 이렇게 한다.
for index, number := range numbers {
fmt.Println(index, number)
}
// 일상적인 예시로는 이런 방식으로 한다. (c랑 비슷한 느낌인듯.)
for i := 0; i < len(numbers); i++ {
fmt.Println(numbers[i])
}
return 1
}
// for 문 연습용. total에 더하기
func superAdd2(numbers ...int) int {
total := 0
for _, number := range numbers {
total += number
}
return total
}
'Web > Golang' 카테고리의 다른 글
[Golang Web 개발] 7. Web개발 기본 정리 2 (0) | 2021.09.15 |
---|---|
[Golang Web 개발] 6. Web개발 기본 정리 1 (0) | 2021.09.15 |
[Golang Web 개발] 4. Go 기본 문법 정리 - map과 struct (0) | 2021.09.15 |
[Golang Web 개발] 3. Go 기본 문법 정리 - 포인터와 array (0) | 2021.09.15 |
[Golang Web 개발] 2. Go 기본 문법 정리 - 조건문, 반복문 (0) | 2021.09.14 |