Web/Golang

[Golang Web 개발] 5. Go 기본 문법 정리 - 함수 / loop

brotoo 2021. 9. 15. 11:24

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
}