Go

[Go] for(반복)문 사용하는법(Use loop for in Go)

HackHiJack 2022. 1. 22. 18:56
728x90
반응형

오늘은 오랜만에 Go언어에 대한 설명을 해볼 것이다.

 

Go는 무조건 loop문을 사용하는 방법은 for 명령어 밖에 없다.

for문은 아래처럼 매우 간단하게 정의할 수 있다.

for [for문 코드] {반복할 코드}

예를 들어, 숫자들을 받아서 모두 더하는 코드를 만들어보면 아래와 같다.

package main

import (
	"fmt"
)

func AllAdd(num ...int) int {
	var total int
	for _, nums := range num {
		fmt.Println(nums)
		total += nums
	}
	return total
}

func main() {
	total_result := AllAdd(1, 2, 3, 4, 5, 6, 7)
	fmt.Println(total_result)
}

위 코드는 1~7까지 수를 더한 값을 출력한다.

AllAdd함수에 for문을 사용하여 total에 인자로 받은 num을 계속 할당하는걸 확인할 수 있다.

 

중간에 range 함수를 사용할 때, 왜 "_"를 사용하냐면, range는 index, 결과 값을 같이 반환기 때문에, index를 _를 넣어서 무시하게 만드는 것이다.

결과는 아래처럼 잘 나온는 걸 확인할 수 있다.

반응형

다른 방법으로는 index를 이용하는 방법이다.

함수 인자를 ...[something]으로 정의하면, something에 인자가 배열로 저장된다.

그래서 0부터 num의 길이까지의 인덱스를 각각 매겨서 total에 할당 해줄수 있다.

약간 C언어, Python의 for문처럼 사용하는 방식이다.

 

말이 어려우니 바로 코드를 확인해보자.

package main

import (
	"fmt"
)

func AllAdd(num ...int) int {
	var total int
	for i := 0; i < len(num); i++ {
		total += num[i]
	}
	return total
}

func main() {
	total_result := AllAdd(1, 2, 3, 4, 5, 6, 7)
	fmt.Println(total_result)
}

위는 range를 사용하지 않아서 index값을 따로 반환하지 않는다.

그래서 index를 상관하지 않는다.

결과를 확인하면 같은 결과 값을 확인할 수 있다.

 

두 방법 중 range는 간단할 것 같은데, index가 처리가 귀찮다.

그리고 i를 계속 증가시키며 num의 index를 이용하는 방법은 그냥 range보다 어려워 보이고, 귀찮은 부분도 있다.

 

결론 : 둘 중 비슷한 난이도라서, 그냥 편한걸로 사용하자.

728x90
반응형