Go 프로그래밍 언어에는 반복문이 for 하나 밖에 없다고 한다. 진짜인 것 같다.
일단 아래와 같은 형식으로 뭘 작성하는 것은 어차피 무리다. 그래도 ' 따옴표가 아니라 ` 임을 기억하자.
package main
import "fmt"
func main() {
fmt.Println(`
1
2
3
4
5
6
7
8
9
10`)
}
이렇게 출력도 가능은 하다.
for문을 이렇게 써본다. for라는 이름에 비하면 뭔가 많이 생략되어 있는 느낌이다. 약간 while 문 같다. 1부터 10까지 합산하는데 문법이 for만 붙어있지 while 같고, { } 이 브라켓은 C언어 같다. 파이썬 처럼 : 콜론 이걸 써야 할 것만 같다.
package main
import "fmt"
func main() {
i := 0
sum := 0
for i < 10 {
i++
sum += i
fmt.Println(sum)
}
}
* 아래에 보이는 것은 그나마 C의 모습처럼 보이는데 ( ) 괄호가 없다... 이것은 파이썬과 C언어를 섞어 놓은 모습이다.
암튼 너무 과거 문법에 집착하지 말고 있는 그대로 바라보면 i 는 0 으로 초기화 조건식 검사하고 for 문 코드블록을 수행한다. 마지막에 증감 연산 ++ 하고 다시 검사하는 과정을 i가 10이 될때까지 한다. 괄호 ( ) 와 { } 에서 어색한 느낌이 난다. 여기서도 C와 파이썬을 섞어 놓은 것 같다.
package main
import "fmt"
func main() {
for i := 0; i < 10; i++ {
fmt.Print(i, ", ")
}
}
* 아래는 조건문이다. 짝수가 아닐때는 가만히 있는 조건이니 짝수만 출력하라는 조건식이다. if 문은 조건식은 괄호를 벗어던진 파이썬 스타일이고 { } 괄호가 있는 것으로 봐서는 C 계열이다. 그리고 중요한 것은 들여쓰기(indentation) 이다. 들여쓰기는 생각보다 성가시다. 파이썬을 오래 다뤄봤다면 어렵지 않을 것이다. 10에 도달하면 한번 다음줄로 내려준다. 줄을 맞추는 것은 다 모양을 위해서이다.
package main
import "fmt"
func main() {
for i := 1; i <= 100; i++ {
if i%2 != 0 {
} else {
fmt.Print(i, ", ")
}
if i%10 == 0 {
fmt.Println()
}
}
}
if else 문도 있고 다음처럼 else if 문도 있다.
package main
import "fmt"
func main() {
i := 3
if i == 0 {
fmt.Println("영")
} else if i == 1 {
fmt.Println("일")
} else if i == 2 {
fmt.Println("이")
} else if i == 3 {
fmt.Println("삼")
} else if i == 4 {
fmt.Println("사")
} else if i == 5 {
fmt.Println("오")
}
}
위의 if문이 복잡해 보이니까 아래처럼 switch case 문을 사용할 수 있다. 맞다. switch는 별로 잘 사용안한다. whlie문은 지워도 이건 남겨둿네 ;;;
package main
import "fmt"
func main() {
fmt.Println("숫자를 입력하시오")
var i int32
fmt.Scanf("%d", &i)
switch i {
case 0:
fmt.Println("영")
case 1:
fmt.Println("일")
case 2:
fmt.Println("이")
case 3:
fmt.Println("삼")
case 4:
fmt.Println("사")
case 5:
fmt.Println("오")
default:
fmt.Println("알 수 없는 숫자")
}
}
조건문과 반복문이 하나밖에 없어서 뭔가 허무하다. switch case는 있어도 잘 않쓰니까... Go의 문법을 보니까 그동안 컴퓨터 프로그래밍을 너무 진지하게 받아들이고 살지 않았나 싶다.
컴퓨터는 컴퓨터의 일을 할 뿐이고 사람은 사람의 일을 할 뿐이다. 무엇이든 지나친 기대와 과도한 관심은 독이 될 수 있다.
*이 포스트의 소스코드는 아래 문서를 참고 CC BY 3.0 에 따라 작성되었다. 저자 Caleb Doxsey 로 이제 인터넷으로 무료 배포한다.