개발이야기/GO

GO - LOOP

쪼린이 2021. 5. 17. 16:08

LOOP

GO의 loop는 다른 언어처럼 for in, for each, for of과 같은 표현은 쓰이지 않고 ONLY FOR!!

여기서는 1부터 6까지 loop를 이용하여 더하는 코드를 짜보려고 한다.

기본적인 range의 속성을 아래 주석에서 확인할 수 있다.

 

func superAdd(numbers ...int) int {
	// range가 numbers 안에서 조건에 맞는 경우 loop를 돌 수 있게 해준다.
	for number := range numbers {
		fmt.Println(number)
      	// 0 1 2 3 4 5
	}
	return 1
}

func main() {
	superAdd(1, 2, 3, 4, 5, 6)
}

 

위의 함수에서의 반환값은 '0 1 2 3 4 5'인데 이는 range가 index값을 함께 반환해주기 때문이다.

우리가 원하는 number의 값을 출력하기 위해서는 아래와 같이 작성한다.

 

func superAdd(numbers ...int) int {
	for index, number := range numbers {
		fmt.Println(index, number)
        // 0 1
        // 1 2
        // 2 3 ....
	}
	return 1
}

 

이렇게 작성하면 왼쪽부터 1열에서는 인덱스가, 2열에서는 우리가 원하는 number의 값이 출력된다.

또는 원래 사용하듯 for문을 돌리는 방법도 있다.

 

func superAdd(numbers ...int) int {
	for i := 0; i < len(numbers); i++ {
		fmt.Println(numbers[i])
	}
	return 1
}

 

본론으로 들어가서 for문으로 1~6까지의 합을 구하는 식은 다음과 같다.

 

func superAdd(nunbers ...int) int {
	total := 0
    for _, number range numbers {
    // index는 필요없으니 ignore value
    total += number
    }
    return total
}

func main() {
	result := superAdd(1, 2, 3, 4, 5, 6)
	fmt.Println(result)
    // 21
}