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 전처리문; 조건문; 후처리문{
}
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문은 무한히 실행 된다.
ex3)
package main
import "fmt"
func main(){
var i int // 초기화 하지않으면 0이 들어감
for { //조건문 생략 하면 true가 됨
i++
fmt.Println(i)
}
fmt.Println("최종 i 값은:", i) //수행 되지 못함
}
무한히 반복되는 루프를 빠져나가기 위해서 필요한 명령어
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 조건에 해당하면 건너뛰고 이어서 수행
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문 예제
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
<생략>
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
<생략>
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()
}
}
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() //개행
}
}
-------------------
*
**
***
****
*****
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()
}
}
--------------------
*****
****
***
**
*
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()
}
}
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("")
}
}
---------------------------------
*
***
*****
*******
*****
***
*