break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
break, default, case, defer, else, goto, switch, fallthrough, if, range, continue, for
25개 키워드 중에서 12개가 제어와 관련이 있다. 이말은 프로그래밍은 조건에 따라서 적절하게 제어하는 방법을 기술하는 것과 같다는 뜻이기도 하다.
if, else
if a > 0 {
fmt.Println("a는 양수다")
}
idioms
//일반적인 사용 예
f, err := os.Open(name)
if err != nil {
// 에러 발생시 처리 코드
return //
}
//정상 처리 코드
//코드 가독성을 높이는 방법, 반환값이 여기에만 사용된다는 것을 명시적으로 드러냄
if f, err := os.Open(name); err != nil {
//....
return
}
for
//초기 조건, 진입 조건, 진입 후처리
for init; condition; post { }
//조건에 맞는 경우 반복
for condition { }
// 무한 반복
for { }
- 10까지 합을 구하는 함수
- 배열에 포함된 값의 총합 구하기
range
break, continue
switch, case, fallthrough
default
코드 읽기
- 실제로 표준 라이브러리에서 사용 예
- 오픈소스에서 사용 예
idioms
- 제대로 쓰기 위한 tip
Quiz
- 아래 코드의 결과를 예측하라!
package main
import "fmt"
func add (a int, b ...int) int {
sum := 0
for _, v := range b {
sum+=v
}
return sum
}
func main() {
fmt.Println(add(1, 2, 3))
fmt.Println("Hello, 世界")
}
- 왜 Go에서는
...
와 같은 가변길이 인자를 마지막에 넣도록 강제하고 있을까? 여러분의 추측은?
참고 자료
동영상 자료