Golang_기초 5 (if문, for문)

아따맘마·2021년 11월 15일
0
post-thumbnail

if 조건문 안에 함수 사용

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에는 에러 값이 들어간다.

for 반복문

golang은 C, C++와 달리 반복문에서 for만 존재한다.
사용하는 방법은 C와 같다.

package main

import "fmt"

func main() {
	for i := 0; i < 5; i++ {
		fmt.Println(i)
	}
}

for로 while처럼

package main

import "fmt"

func main() {
	i := 0

	for i < 5 {
		fmt.Println(i)
		i++
	}
}

for에 조건식을 넣으면 조건식이 참일 때만 동작하는 C에서의 while와 같아진다.

for {
	fmt.Println("Hello, World!")
}

for에 아무 조건식이 없으면 무한루프가 된다.

break

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

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!")
}

continuebreak처럼 레이블과 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처럼 변화식을 그대로 나열하면 컴파일 에러가 발생한다.

profile
늦게 출발했지만 꾸준히 달려서 도착지점에 무사히 도달하자

0개의 댓글