예시) 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)
}