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)
}
끝
'노마드코더스 아카데미 > Go언어로 웹스크래퍼 만들기' 카테고리의 다른 글
Dictionary use type in Go lang (feat. map) (2) | 2020.03.24 |
---|---|
struct in Golang (수정) (0) | 2020.03.17 |
Go웹스크래핑[3] (0) | 2020.03.13 |
Go웹스크래핑[1] (0) | 2020.03.11 |
Go 웹스크래핑[0] (0) | 2020.03.11 |