1. for 반복(loop) 문

go에서는 for문만을 사용한다

 

forEach나 for in 같은 경우는 사용할 필요가 없다고 한다

 

왜냐하면 range를 사용할 것이기 때문이다 

(1) range

range란? 각각의 배열 요소에 반복할 내용을 실행시킨다

 

형태 : for 변수 := range 범위가 될 어떤 것(배열, 슬라이스, 문자열){

                  반복할 내용

         }

 

예시) superAdd함수에 들어있는 인자(2,3,4,5,7,9)의 개수 6개만큼 numbers를 출력한다  ≒forEach( ) in javascript

func superAdd(numbers ...int) int{
	for number := range numbers{ //반복할 횟수는 numbers의 개수
		fmt.Println(number)	 //반복될 내용
    }
	return 1
}

func main(){
	superAdd(2,3,4,5,7,9)       //numbers의 개수는 6개
}

실행결과를 보면 

이렇게 나오게 되는데 배열 요소의 개수만큼 자동으로 index값을 받게 되어서라고 한다

array(배열)과 slice(슬라이스: 융통성 있는 배열?)에서 range반복문은 index값과 배열 안의 값을 생성한다(index먼저 생성)

 

index를 보기 싫다면 for의 변수 중 처음은 무시하고( _ 언더바 사용 ) 두 번째 것을 입력하면 된다

이렇게

func superAdd(numbers ...int) int{
	for _,number := range numbers{ 
		fmt.Println(number)	 
    }
	return 1
}

func main(){
	superAdd(2,3,4,5,7,9)       

(2) i 사용

C언어와 비슷하다

꼭 i만 써야 되는 것은 아니다(하지만 아마도 수는 안될 것이다)

형태: for i:=0; i <범위(대신 수 형태여야 함); i++{

            반복할 내용

       }

(3) 총합 구하기 예제

package main

import (
	"fmt"
)

func superAdd(numbers ...int) int {
	total := 0                   	//총합이 되어줄 친구 반복문 밖에 있어야함
	for _, number := range numbers {//index는 보기싫어서 _로 무시
		total = number + total		//total변수에 각각의 수를 더해주기
	}
	return total
}

func main() {
	result := superAdd(2, 3, 6, 7, 9, 10)
	fmt.Println(result)
}

//결과 37

요약

1. for만 사용(for in, forEach 없음)

2.range는 배열에선 index값을 먼저 생성한다

3.i 같은 변수로도 범위를 구할 수 있다

 

2. if ~ else, switch~case

1. if ~ else

1) 다른 언어들과 다르게 ( )이나 :이 필요 없다

2) VScode에서 제공하는 extention return값을 주면 else를 쓸 필요 없다

3) if문을 쓰는 도중에 변수를 생성할 수 있다(무엇을 위한 변수인지 알아보기 쉬움) 

	if koreanAge := age + 2; koreanAge < 18 { //(),:필요없이 조건 바로적음 //koreanAge := age + 2; if문을 쓰는 도중에 변수만들기
		return false
	} 
	return true //else{ return true} 였을텐데 return true만 적어도 실행가능 
	

else if 조건을 추가할 때 쓰임

if 조건{

 

} else if 조건{

 

} else {

 

}

2. switch/case

1) C나 javascript와 많이 비슷하다(파이썬은 switch를 사용하지 않음)

2) if~else와 마찬가지로 쓰는 도중에 변수를 생성할 수 있다

3) else if를 도배할 필요 없이 case로 짧게 짧게 쓸 수 있다

 

package main

import (
	"fmt"
)

func canIdrink(age int) bool {
	switch koreanAge= age+2; koreanAge { //switch문 도중 변수 선언 가능
	case age < 18:			//만약 if문을 썼다면 else if로 도배될 것을 case로 짧게 짧게
		return false
	case age ==18:
		return true
	}
	return false
}

func main() {
	result := canIdrink(18)
	fmt.Println(result)
}

 

+ Recent posts