Golang

[GoLang 시작하기 4] for, range, if, switch

여니여니_ 2020. 3. 18. 00:25

 

for, range

 

Go의 유일한 루프가 for다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main
 
import (
    "fmt"
)
 
func superAdd(numbers ...int) int {
    total := 0
    for index, number := range numbers {
        total += number
        fmt.Println("index: ", index, ", number: ", number)
    }
    return total
}
 
func main() {
 
    result := superAdd(1, 2, 3, 4, 5, 6)
    fmt.Println(result)
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

 

(결과)

 

if

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package main
 
import (
    "fmt"
)
 
func canIDrink(age int) bool {
    koreanAge := age + 2
    if koreanAge < 18 {
        return false
    }
    return true
 
}
func main() {
    fmt.Println(canIDrink(16))
 
}
 

 

조건식을 하나만 사용할 때는 소괄호를 쓰지 않는다.

 

조건식의 결과를 반대로 뒤집기 위해 ! 연산자를 사용할 수도 있다.

 

중괄호({})는 필수이다. if 문 내부에 코드가 단 한 줄만 있더라도 중괄호를 써야 한다.

여는 괄호({)는 if와 같은 줄에 있어야 하고, 닫는 괄호(})는 else와 같은 줄에 있어야 한다. 

처리할 조건식이 많을 때는 else if 대신 switch 문을 사용한다.

 

이것은 위 함수와 동일한 내용인데 잘 보면 if 바로 뒤에 koreanAge 초기화구문이 들어가 있는 것을 볼 수 있다.

변수가 if문 안에서만 쓰일 경우, 이처럼 if 바로 뒤에 적어주면 다른 곳에서는 쓰이지 않는다는 것을 알 수 있어 코드의 가독성이 높아진다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package main
 
import (
    "fmt"
)
 
func canIDrink(age int) bool {
 
    if koreanAge := age + 2; koreanAge < 18 {
        return false
    }
    return true
 
}
func main() {
    fmt.Println(canIDrink(16))
 
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

Switch

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main
 
import (
    "fmt"
)
 
func canIDrink(age int) bool {
    switch age {
   case 16,17:
        return false
    case 18:
        return true
    }
    return false
 
}
func main() {
    fmt.Println(canIDrink(16))
 
}
 

switch 문은 첫 번째 case의 조건부터 차례로 비교하다가 조건이 일치하는 case의 구문을 수행하고 switch 문을 종료한다. case에는 값을 하나 이상 쓸 수 있다. 값을 둘 이상 쓸 때는 콤마(,)로 구분해준다.

 

fallthrough

일치하는 case 조건을 만나면 바로 switch 문을 빠져나오므로 switch 문에는 break를 쓰지 않아도 된다. 일치하는 조건을 만났지만 switch 문을 빠져나오지 않고 다음 case로 넘어가려면 fallthrough를 표기해야 한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main
 
import "fmt"
 
func main() {
    i := 2
    switch i {
    case 1:
        fmt.Println("i는 1보다 작거나 같다")
        fallthrough
    case 2:
        fmt.Println("i는 2보다 작거나 같다.")
        fallthrough
    case 3:
        fmt.Println("i는 3보다 작거나 같다.")
    }
}
 
 

(결과)