Go 기초 2. Switch, for

JINSOO PARK·2021년 10월 12일
0

Switch-case

Switch의 값을 case의 결과와 순차적으로 비교하여 참일 경우에 해당 결과를 수행하고 빠져 나간다.

ex 1)

package main

import "fmt"

func main() {
	x := 33

	switch x {
	case 31:
		fmt.Println("x = 31")
	case 32:
		fmt.Println("x = 32")
	case 33:
		fmt.Println("x = 33")
	}
}


switch문의 또다른 기능으로 switch의 값을 생략 하였을 경우 defalt 값으로 true로 인식한다.

ex2)

package main

import "fmt"

func main() {
	x := 33
    
switch {       //생략된 값은 true
case x > 40:
	fmt.Println("x 는 40보다 크다")
case x < 20:
	fmt.Println("x는 20보다 작다")
case x > 30:  
	fmt.Println("x는 30보다 크다")
case x == 33:  //순차적으로 수행하고 빠져나가기 때문에 마지막 값은 출력되지 않았다.
	fmt.Println("x 는 33")  
	}
}
----------------------------------
x는 30보다 크다
    

반복문(for)

Go랭에서 반복문은 for문 하나밖에 없다.

for 조건 {
수행내용
}

for의 조건이 true 일때 반복적으로 수행한다.

ex1)

package main

import "fmt"

func main() {
	i := 0
	for i < 10 {
		fmt.Println(i)
		i++      // i += 1과 같다.
	}

	fmt.Println("최종 i 값은:", i)
}
------------------------
0
1
2
3
4
5
6
7
8
9
최종 i 값은: 10

한줄 for문

for 전처리문; 조건문; 후처리문{
}

ex2)

package main

import "fmt"

func main() {
	var i int  // 메인함수 안에서 i를 사용 할 수 있도록 선언해 줌
	for i = 0; i < 10; i++ {
		fmt.Println(i)
	}
	fmt.Println("최종 i 값은:", i)
}
------------------------
0
1
2
3
4
5
6
7
8
9
최종 i 값은: 10
    

조건문을 생략한 for문

for문에 조건문을 생략하였을때 for문은 무한히 실행 된다.

ex3)

package main

import "fmt"

func main(){  
	var i int // 초기화 하지않으면 0이 들어감
	for {    //조건문 생략 하면 true가 됨
		i++
		fmt.Println(i)
	}
	fmt.Println("최종 i 값은:", i) //수행 되지 못함
}

break

무한히 반복되는 루프를 빠져나가기 위해서 필요한 명령어

ex1)

package main

import "fmt"

func main() {
	var i int
	for {     
		i++
		if i == 10 { //if 조건문을 통해 i가 10이 될 경우 break
			break
		}
		fmt.Println(i)
	}
	fmt.Println("최종 i 값은:", i) 
}
---------------------------------
1
2
3
4
5
6
7
8
9
최종 i 값은: 10

continue

continue 조건에 해당하면 건너뛰고 이어서 수행

package main

import "fmt"

func main() {
	var i int
	for {
		i++
		if i == 5 { // i의 값이 5일때 건너 뛴다.
			continue
		}
		if i == 10 {
			break
		}
		fmt.Println(i)
	}
	fmt.Println("최종 i 값은:", i)
}
-----------------------------------
1
2
3
4
6
7
8
9
최종 i 값은: 10

for문 예제

1. 구구단 만들기

package main

import "fmt"

func main() {
	for dan := 1; dan <= 9; dan++ {
		fmt.Printf("%d단\n", dan) // 변수 dan 은 1단 2단 을 표시한다.

		for j := 1; j <= 9; j++ {
			fmt.Printf("%d * %d = %d\n", dan, j, dan*j) //이중for문 으로 dan 1인 상태에서 j는 1~ 9 까지 반복한다.
		}
        fmt.Println() //개행용
	}
}
-------------------------
1단
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
1 * 5 = 5
1 * 6 = 6
1 * 7 = 7
1 * 8 = 8
1 * 9 = 9

2단
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
<생략>

2. 5단 생략하기

package main

import "fmt"

func main() {
	for dan := 1; dan <= 9; dan++ {
		if dan == 5 {
			continue // dan이 5가되면 생략한다.
		}

		fmt.Printf("%d단\n", dan)

		for j := 1; j <= 9; j++ {
			fmt.Printf("%d * %d = %d\n", dan, j, dan*j)
		}
		fmt.Println()
	}
}
----------------------------------
<생략>
4단
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36

6단
6 * 1 = 6
6 * 2 = 12
6 * 3 = 18
<생략>

3. 2x3=6 만 생략하기

package main

import "fmt"

func main() {
	for dan := 1; dan <= 9; dan++ {

		fmt.Printf("%d단\n", dan)

		for j := 1; j <= 9; j++ {
			if dan == 3 {     
				if j == 2 {
					continue
				}   // 간단하게 if dan == 3 && j == 2 로 할 수 있음
			}
			fmt.Printf("%d * %d = %d\n", dan, j, dan*j)
		}
		fmt.Println()
	}
}

4. 별 만들기

package main

import "fmt"

func main() {

	for i := 0; i < 5; i++ {
		for j := 0; j < i+1; j++ {  //j 는 i+1한 값 만큼 반복함
			fmt.Print("*")  // Print는 개행을 하지 않음
		}
		fmt.Println() //개행
	}
}
-------------------
*
**
***
****
*****

5. 역순으로 만들기

package main

import "fmt"

func main() {

	for i := 0; i < 5; i++ {
		for j := 0; j < 5-i; j++ { // i가 0 일때 즉 첫번째 줄일때 j < 5-0 즉 5번 반복 한다. 
			fmt.Print("*")
		}
		fmt.Println()
	}
}
--------------------
*****
****
***
**
*

6. 1,2,3,2,1 만들기

package main

import "fmt"

func main() {

	for i := 0; i < 3; i++ {
		for j := 0; j < i+1; j++ {
			fmt.Print("*")
		}
		fmt.Println()
	}

	for i := 0; i < 2; i++ {
		for j := 0; j < 2-i; j++ {
			fmt.Print("*")
		}
		fmt.Println()
	}
}

7. 다이아몬드 만들기

package main

import "fmt"

func main() {

	for i := 1; i < 5; i++ {
		for j := 1; j < 5-i; j++ {
			fmt.Print(" ")
		} // 공백 부분을 만든다.
		for x := 1; x <= (i*2 - 1); x++ {
			fmt.Print("*")
		} // 공백 옆에 별을 붙인다.
		println("") 한칸띄운다.
	}
	for i := 1; i < 4; i++ { //역순으로 만든다.
		for j := 1; j < i+1; j++ {
			fmt.Print(" ")
		}
		for x := 1; x <= (7 - i*2); x++ {
			fmt.Print("*")
		}
		println("")
	}
}
---------------------------------
   *
  ***
 *****
*******
 *****
  ***
   *
profile
개린이

0개의 댓글