Archive/Go

Go 의 for, range, ...args

nimkoes 2021. 5. 16. 13:59
728x90

 

 

Go 에서 반복문은 오직 for 를 사용해서만 가능하다.

어떻게 보면 다양한 형태의 for 문을 사용 했었는데 하나로 통일 된게 더 좋을수도 있겠다.

 

개수가 정해지지 않은 여러개의 정수를 전달받아 합을 반환하는 함수를 만들어 보자.

 

package main

import "fmt"

func superAdd(numbers ...int) int {
	fmt.Println("without index")
	for number := range numbers {
		fmt.Print(number)
	}

	fmt.Println()
	fmt.Println()
	fmt.Println("with index")
	for index, number := range numbers {
		fmt.Println(index, number)
	}

	fmt.Println()
	fmt.Println()
	fmt.Println("ignore index")
	for _, number := range numbers {
		fmt.Println(number)
	}

	fmt.Println()
	fmt.Println()
	fmt.Println("without range")
	for i := 0; i < len(numbers); i++ {
		fmt.Println(i, numbers[i])
	}

	return 1
}

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

 

 

'range' 키워드는 오직 반복문에서 사용하기 위한 것으로, 배열 형태를 사용할 때 같이 사용 한다.

이 때, 'without index' 와 'with index' 의 차이를 보면, range 를 사용했을 때 첫번째 값으로 요소의 값이 아닌 배열의 index 를 사용 한다는 것이다.

 

그래서 'without index' 의 예시를 보면 0부터 5까지 출력한 것을 확인할 수 있다.

 

 

값도 한 번에 가지고 오려면 'with index' 처럼 for 문에 두 개의 변수를 사용하면 된다.

만약 index 는 필요 없고 값만 사용하려면 ignore index' 처럼, 언버다 (_) 를 사용하면 그 값이 무시 된다.

 

 

range 를 사용하지 않고 for 문을 사용할 수 있는데, 그 예시는 위의 'without range' 이다.

여기서 또 하나 발견한게 있는데, 소괄호를 사용하지 않는다는 것도 있지만, 전위 증가 연산자를 사용할 수 없었다.

i++ 은 실행이 되는데 ++i 는 컴파일 오류가 발생한다.

 

 

 

 

728x90

'Archive > Go' 카테고리의 다른 글

Go 의 switch 사용 방법  (0) 2021.05.16
Go 의 if 사용 방법  (0) 2021.05.16
Go 의 함수 part 2 (naked return, defer)  (0) 2021.05.16
Go 의 함수 part 1 (기본 사용법)  (0) 2021.05.16
Go 의 상수와 변수  (0) 2021.05.16