package main
import (
"fmt"
"io/ioutil"
)
func main() {
var b []byte
var err error
b, err = ioutil.ReadFile("../hello.txt")
if err == nil {
fmt.Printf("%s", b)
}
}
기존의 if문은 조건문 바로 뒤에 {}을 사용한다. 이 때 위의 소스 코드를 간단하게 수정할 수 있는데, if 조건문 안에 함수를 사용하면
package main
import (
"fmt"
"io/ioutil"
)
func main() {
if b, err := ioutil.ReadFile("../hello.txt"); err == nil {
fmt.Printf("%s", b)
}
}
if 조건문 안에서 함수 실행 후 ;로 구분 뒤 조건식을 작성. 위에서 b에는 파일의 내용이, err에는 에러 값이 들어간다.
golang은 C, C++와 달리 반복문에서 for만 존재한다.
사용하는 방법은 C와 같다.
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
fmt.Println(i)
}
}
package main
import "fmt"
func main() {
i := 0
for i < 5 {
fmt.Println(i)
i++
}
}
for에 조건식을 넣으면 조건식이 참일 때만 동작하는 C에서의 while와 같아진다.
for {
fmt.Println("Hello, World!")
}
for에 아무 조건식이 없으면 무한루프가 된다.
package main
import "fmt"
func main() {
Loop:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if j == 2 {
break Loop
}
fmt.Println(i, j)
}
}
fmt.Println("Hello, world!")
}
무한루프가 도는 for에서 break 키워드를 사용하면 무한루프를 빠져나간다. 위처럼 break 키워드에 레이블을 지정할 수 있다.
이 때 break와 for 반복문 사이에 다른 코드가 있으면 안된다.
package main
import "fmt"
func main() {
Loop:
fmt.Println("begin for Loop") //컴파일 에러
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if j == 2 {
break Loop
}
fmt.Println(i, j)
}
}
fmt.Println("Hello, world!")
}
continue는 특정 부분 이하는 실행되지 않을 때 사용
package main
import "fmt"
func main() {
Loop:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if j == 2 {
continue Loop
}
fmt.Println(i, j)
}
}
fmt.Println("Hello, world!")
}
continue도 break처럼 레이블과 for 사이에 다른 코드가 있어서는 안된다.
package main
import "fmt"
func main() {
for i, j := 0, 0; i < 10; i, j = i+1, j+2 {
fmt.Println(i, j)
}
}
golang의 반복문에서 여러 변수를 처리하려면 병렬 할당을 사용해야 한다.
i, j = i+1, j+2처럼 병렬 할당을 해줘야 한다.
package main
import "fmt"
func main() {
for i, j := 0, 0; i < 10; i++, j+=2 { // 컴파일 에러
fmt.Println(i, j)
}
}
위처럼 병렬 할당을 하지 않고 i++, j+=2처럼 변화식을 그대로 나열하면 컴파일 에러가 발생한다.