사칙연산자: +, -, *, /, %
증감연산자: ++, -
a == b
a != c
a >= b
A && B
A || !(C && B)
비트단위 연산을 위해 사용됨.
c = (a & b) << 5
a = 100
a *= 10
a >>= 2
a |= 1
포인터연산자는 & 혹은 * 을 사용하여 해당 변수의 주소를 얻어내거나 반대로 Dereference 할 때 사용한다.
하지만 Go에는 포인터 연산 기능을 제공하진 않는다.
var k int = 10
var p = &k // k의 주소를 할당
조건식을 괄호() 로 감싸지 않아도 된다.
또한 if문의 조건식은 반드시 Boolean 식으로 표현되어야 한다.
if k == 1 {
println("One")
}
Go 에서는 case 블럭 마지막에 break를 생략해도 된다.
만약 이러한 default 기능인 break를 사용하지 않고 계속 아래 코드 블럭들을 실행하게 하려면 fallthrough 문을 명시해 주면 된다.
Go에서 반복문은 for 하나 밖에 없다.
초기값; 조건식; 증감을 둘러싸는 괄호()는 생략해야 한다.
또한 초기값과 증감식을 생략하고 조건식만을 사용할 수 있다.
func main() {
n := 1
for n < 100 {
n *= 2
}
println(n)
}
for 루프로 무한루프를 만들려면 초기값, 조건식, 증감 모두 생략하면 된다.
func main() {
for {
println("무한루프")
}
}
for range 문은 한 요소씩 가져와서 차례로 for 블럭의 문장들을 실행한다.
js의 forEach와 비슷하다.
for 인덱스, 요소값 := range 컬렉션 과 같이 for 루프를 구성한다.
names := []string{"홍길동", "이순신", "강감찬"}
for index, name := range names {
println(index, name)
}
break, continue, goto 문
for 루프 내에서 즉시 빠져나오려면 break,
for 루프의 중간에서 나머지 코드들을 실행하지 않고 for 루프 시작부분으로 바로 가려면 continue,
기타 임의의 코드로 이동하기 위해서 goto 문을 사용할 수 있다.
goto 문은 for 루프와 관련없이 사용될 수 있다.
break 문은 for 루프 이외에 switch문이나 select문에서도 사용할 수 있다.
continue는 for 루프와 연관되어 사용된다.