[ā§§.ā§Ŧ] āĻāύā§āĻā§āϰā§āϞ āĻĢā§āϞ⧠āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ (Control Flow Structure)
[ā§§.ā§Ŧ.ā§§] āĻāύā§āĻĄāĻŋāĻļāύāĻžāϞ āϏā§āĻā§āĻāĻŽā§āύā§āĻ (Conditional Statement)
āĻāύā§āĻĄāĻŋāĻļāύāĻžāϞ āϏā§āĻā§āĻāĻŽā§āύā§āĻ āĻŦāĻŋāĻāĻŋāύā§āύ āĻļāϰā§āϤā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āĻā§āύ āϰāĻžāϏā§āϤāĻžā§ āϝāĻžāĻŦā§ āϤāĻž āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧāĨ¤ āĻŦāĻŋāĻāĻŋāύā§āύ āĻļāϰā§āϤā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāϰ āϰā§āĻāĻžāϞā§āĻ true āĻ āĻĨāĻŦāĻž false āĻšā§ā§ āĻĨāĻžāĻā§āĨ¤
[ā§§.ā§Ŧ.ā§§.ā§§] if,else,else if
āĻļāϰā§āϤā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰ⧠āĻā§āύ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϤ⧠“if, else, else if” āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§āĨ¤ āĻāĻāĻžāύā§, āĻāύā§āĻĄāĻŋāĻļāύ true āĻšāϞ⧠āĻāĻāĻāĻŋ āĻāĻžāĻ āĻāϰāĻŦā§ āĻāϰ false āĻšāϞ⧠āĻ āύā§āϝ āĻāϰā§āĻāĻāĻŋ āĻāĻžāĻ āĻāϰāĻŦā§āĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ –
if 7%2 == 0 {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd")
}
āĻāĻāĻāĻĒā§āĻ –
7 is odd
else āĻāĻžā§āĻžāĻ if āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžā§āĨ¤
if 8%4 == 0 {
fmt.Println("8 is divisible by 4")
}
āĻāĻāĻāĻĒā§āĻ –
8 is divisible by 4
āĻāĻŽāϰāĻž āĻāĻžāĻāϞ⧠āĻāύā§āĻĄāĻŋāĻļāύā§āϰ āĻāĻā§ āϏā§āĻā§āĻāĻŽā§āύā§āĻ āĻ āϞāĻŋāĻāϤ⧠āĻĒāĻžāϰāĻŋ, āĻāĻ āϏā§āĻā§āĻāĻŽā§āύā§āĻ āĻā§āϝāĻžāϰāĻŋā§ā§āĻŦāϞ āĻĒāϰāĻŦāϰā§āϤ⧠scope āĻāϰ āϏāĻāϞ āĻāĻžā§āĻāĻžā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžāĻŦā§āĨ¤
if num := 9; num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has 1 digit")
} else {
fmt.Println(num, "has multiple digits")
}
āĻāĻāĻāĻĒā§āĻ –
9 has 1 digit
[ā§§.ā§Ŧ.ā§§.⧍] switch
āĻāĻāĻāĻž āĻā§āϝāĻžāϞā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§, āĻ āύā§āĻāĻā§āϞ⧠āϏā§āĻā§āĻāĻŽā§āύā§āĻ āĻĨā§āĻā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻāĻāĻž āϏā§āĻā§āĻāĻŽā§āύā§āĻ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻ āĻāϰāĻžāϰ āĻāύā§āϝ switch āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§āĨ¤ āĻāĻāĻ case āϏā§āĻā§āĻāĻŽā§āύā§āĻā§ āĻāĻāĻžāϧāĻŋāĻ āĻāĻā§āϏāĻĒā§āϰā§āĻļāύ āĻāϞāĻžāĻĻāĻž āĻāϰāϤ⧠āĻāĻŽāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§āĨ¤
āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏ –
switch optstatement; optexpression{
case expression1: Statement..
case expression2: Statement..
...
default: Statement..
}
āĻāĻĻāĻžāĻšāϰāĻŖ –
package main
import "fmt"
func main() {
day := "Friday"
switch day {
case "Monday":
fmt.Println("It's Monday, the start of the week!")
case "Tuesday":
fmt.Println("It's Tuesday, still a long way to go!")
case "Wednesday":
fmt.Println("It's Wednesday, middle of the week!")
case "Thursday":
fmt.Println("It's Thursday, almost there!")
case "Friday":
fmt.Println("It's Friday, the end of the week!")
default:
fmt.Println("It's the weekend!")
}
}
āĻāĻāĻāĻĒā§āĻ-
It's Friday, the end of the week!
[ā§§.ā§Ŧ.⧍] Loops
āϞā§āĻĒ āϝā§āĻā§āύ⧠āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āϞā§āϝāĻžāĻāĻā§ā§ā§āĻā§āϰ āĻāĻāĻāĻŋ āĻŽā§āϞāĻŋāĻ āĻŦāĻŋāώ⧠āĨ¤ āϝāĻāύ āĻāĻ āĻŦāĻž āĻāĻāĻžāϧāĻŋāĻ āĻ āĻĒāĻžāϰā§āĻļāύ, āĻāĻŋāύā§āύ āĻŦāĻž āĻāĻāĻ āĻā§āϝāĻžāϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻŦāĻžāϰ āĻŦāĻžāϰ āϰāĻžāύ āĻāϰāĻžāϰ āĻĒā§āϰā§ā§āĻāύ āĻĒā§ā§ āĻ āĻĨāĻŦāĻž āĻ ā§āϝāĻžāϰā§, āϏā§āϞāĻžāĻāϏ, āĻŽā§āϝāĻžāĻĒā§āϰ āĻŽāϤ āĻāĻžāϞā§āĻāĻļāύāĻā§āϞā§āϰ āĻā§āϝāĻžāϞ⧠āύāĻŋā§ā§ āĻāĻžāĻ āĻāϰāĻž āĻšā§, āϤāĻāύ āϞā§āĻĒ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤ āĻĒā§āϰāϤā§āϝā§āĻāĻŦāĻžāϰ āϞā§āĻĒ āĻā§āϰ⧠āĻāϏāĻžāϰ āĻĒāϰ āϞā§āĻĒā§āϰ āĻā§āϤāϰā§āϰ āĻ āĻĒāĻžāϰā§āĻļāύ āĻāĻŦāĻžāϰ āϰāĻžāύ āĻāϰāĻžāϰ āĻĒā§āϰā§āĻŦā§ āĻāĻŋāĻā§ āĻļāϰā§āϤā§āϰ āϏāĻŽā§āĻŽā§āĻā§āύ āĻšāϤ⧠āĻšā§āĨ¤ āĻāĻ āĻļāϰā§āϤā§āϰ āĻŽāϧā§āϝ⧠āĻĨā§āĻā§ āĻĨāĻžāĻāϞā§, āϞā§āĻĒāĻāĻŋ āĻāĻŦāĻžāϰ āĻāϞ⧠āĻāĻŦāĻ āύāĻž āĻĨāĻžāĻāϞ⧠āϞā§āĻĒ āĻĨā§āĻā§ āĻŦā§ā§ āĻšā§ā§ āϝā§ā§ā§ āĻĒāϰā§āϰ āĻā§āĻĄ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻ āĻāϰāĻž āĻļā§āϰ⧠āĻšā§āĨ¤Â
Go-āϤā§, āĻŦāĻšā§āϞ āĻŦā§āϝāĻŦāĻšā§āϤ āϞā§āĻĒ āϏā§āĻā§āĻāĻŽā§āύā§āĻ āĻ Iterator āĻāĻŋ-āĻā§āĻžāϰā§āĻĄ āĻšāĻā§āĻā§ –Â
- for
- range
[ā§§.ā§Ŧ.⧍.ā§§] for āϏā§āĻā§āĻāĻŽā§āύā§āĻ
āϏāĻŦāĻĨā§āĻā§ āĻŦā§āĻļā§ āĻŦā§āϝāĻŦāĻšā§āϤ āϞā§āĻĒ āϏā§āĻā§āĻāĻŽā§āύā§āĻ āĻšāĻā§āĻā§ “for”. āĻāĻā§ āĻāĻŽāϰāĻž āĻŦāĻŋāĻāĻŋāύā§āύ āϰā§āĻĒā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋ –
- While āϞā§āĻĒā§āϰ āĻŽāϤ –Â
i := 1
for i <= 3 {
fmt.Println(i)
i = i + 1
}
āĻāĻā§āώā§āϤā§āϰ⧠āĻāĻŽāϰāĻž āĻļā§āϧ⧠āĻļāϰā§āϤā§āϰ āĻāĻĒāϏā§āĻĨāĻŋāϤāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻā§āĻāĻŋāĨ¤ āϝāϤāĻā§āώāĻŖ āύāĻž āĻāĻ āĻļāϰā§āϤā§āϰ āĻŦāĻžāĻāϰ⧠āϝāĻžāĻā§āĻā§, āĻāĻ āϞā§āĻĒ āĻāϞāϤā§āĻ āĻĨāĻžāĻāĻŦā§āĨ¤Â
āĻāĻāĻāĻĒā§āĻ –Â
1
2
3
- āĻā§āϞāĻžāϏāĻŋāĻ/āĻŦā§āϏāĻŋāĻ āϞā§āĻĒā§āϰ āĻāύā§āϝ –
for j := 7; j <= 9; j++ {
fmt.Println(j)
}
āĻāĻ āĻā§āώā§āϤā§āϰ⧠j := 7 āĻā§ āĻŦāϞāĻž āĻšā§ initialization, āϝā§āĻāĻž āϞā§āĻĒ āĻļā§āϰ⧠āĻšāĻā§āĻžāϰ āĻĒā§āϰā§āĻŦā§āĻ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻ āĻšā§ā§ āϝāĻžāĻŦā§āĨ¤ āĻāϰāĻĒāϰ, j <= 9 āĻšāϞ⧠āĻāύā§āĻĄāĻŋāĻļāύ āĻŦāĻž āĻļāϰā§āϤ, āϞā§āĻĒ āĻāĻ āĻļāϰā§āϤ āĻĒā§āϰāĻŖā§āϰ āϞāĻā§āώā§āϝā§āĻ āĻāϞāĻŦā§āĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ Boolean āĻāĻā§āϏāĻĒā§āϰā§āĻļāύ, āϝāĻž āĻĒā§āϰāϤā§āϝā§āĻāĻŦāĻžāϰ āϞā§āĻĒ āĻā§āϰ⧠āĻāϏāĻžāϰ āĻĒāϰ āĻā§āĻ āĻšāĻŦā§ āĻāĻŦāĻ true āĻšāϞ⧠āϞā§āĻĒ āĻāϞāĻŽāĻžāύ āĻĨāĻžāĻāĻŦā§āĨ¤ āϏāĻŦāĻļā§āώā§, j++ āĻšāϞ⧠increment, āϝā§āĻāĻž āĻĒā§āϰāϤā§āϝāĻāĻŦāĻžāϰ āϞā§āĻĒ āĻāϞāĻž āĻļā§āώ⧠āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻ āĻšāĻŦā§āĨ¤Â
āĻāĻāĻāĻĒā§āĻāĻ
7
8
9
- āĻ āϏā§āĻŽ āϞā§āĻĒ –
for {
fmt.Println("loop")
break
}
āĻā§āύ⧠āĻļāϰā§āϤ āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻ āϞā§āĻĒ āĻāĻ āĻŋāϤ āĻāĻŦāĻ āϞā§āĻĒā§āϰ āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻā§āύ⧠āĻšāϏā§āϤāĻā§āώā§āĻĒ āĻāĻžā§āĻž āĻāĻ āϞā§āĻĒ āĻĨā§āĻā§ āĻŦā§āϰ āĻšāĻā§āĻž āϝāĻžāĻŦā§ āύāĻžāĨ¤ āĻāĻā§āώā§āϤā§āϰ⧠āĻāĻŽāϰāĻž break āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻ āϞā§āĻĒ āĻĨā§āĻā§ āĻŦā§āϰ āĻšā§ā§āĻāĻŋāĨ¤
āĻāĻāĻāĻĒā§āĻ –Â
loop
[ā§§.ā§Ŧ.⧍.⧍] range
range āĻŦāĻŋāĻāĻŋāύā§āύ āĻāĻžāϞā§āĻāĻļāύā§āϰ āĻāϞāĻŋāĻŽā§āύā§āĻāĻā§āϞ⧠āĻā§āϰāĻŽāĻžāύā§āϏāĻžāϰ⧠āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤ āĻāĻāĻž āĻ āύā§āĻāĻāĻž āĻŦā§āϏāĻŋāĻ for āϞā§āĻĒā§āϰ āĻŽāϤāĨ¤ āĻāĻŋāύā§āϤ⧠āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻāĻ āϝā§, āϏāĻžāϧāĻžāϰāĻŖ for āϞā§āĻĒ āϏāĻŦāĻā§āώā§āϤā§āϰā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžā§, āϝā§āĻāĻžāύ⧠range āĻļā§āϧ⧠āĻ ā§āϝāĻžāϰā§, āϏā§āϞāĻžāĻāϏ, āĻŽā§āϝāĻžāĻĒ āĻŦāĻž āĻā§āϝāĻžāύā§āϞā§āϰ āĻŽāϤ āĻāĻžāϞā§āĻāĻļāύā§āϰ āĻā§āώā§āϤā§āϰ⧠āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤
āύāĻŋāĻā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖā§ āĻāĻŽāϰāĻž āĻāĻāĻāĻŋ āϏā§āϞāĻžāĻāϏā§āϰ āĻā§āϤāϰ⧠āĻĨāĻžāĻāĻž āϏāĻāĻā§āϝāĻžāĻā§āϞ⧠sum āĻā§āϝāĻžāϰāĻŋā§ā§āĻŦāϞ⧠āϝā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ range āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĻāĻŋ –Â
nums := []int{2, 3, 4}
sum := 0
for _, num := range nums {
sum += num
}
fmt.Println("sum:", sum)
āĻāĻāĻāĻĒā§āĻ –Â
sum: 9
āĻ ā§āϝāĻžāϰ⧠āĻāĻŦāĻ āϏā§āϞāĻžāĻāϏā§āϰ āĻā§āώā§āϤā§āϰ⧠range āĻĒā§āϰāϤā§āϝā§āĻ āϧāĻžāĻĒā§ āĻāύāĻĄā§āĻā§āϏ āĻāĻŦāĻ āĻā§āϝāĻžāϞ⧠āĻāĻāϝāĻŧāĻ āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤ āĻāĻĒāϰ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻāύāĻĄā§āĻā§āϏā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻāĻŋāϞ āύāĻž, āϤāĻžāĻ āĻāĻŽāϰāĻž āĻāĻāĻŋāĻā§ Blank Identifier(_) āĻĻāĻŋāϝāĻŧā§ āĻāĻĒā§āĻā§āώāĻž āĻāϰā§āĻāĻŋāĨ¤Â
āĻāĻŽāϰāĻž āϝāĻĻāĻŋ āĻāύāĻĄā§āĻā§āϏāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāĻ –
for i, num := range nums {
if num == 3 {
fmt.Println("index:", i)
}
}
āĻāĻāĻāĻĒā§āĻ –Â
index: 1
map-āĻāϰ āĻā§āώā§āϤā§āϰ⧠range āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠key āĻāĻŦāĻ value āĻĒāĻžāĻā§āĻž āϝāĻžā§ –
kvs := map[string]string{"a": "apple", "b": "banana"}
for key, value := range kvs {
fmt.Printf("%s -> %s\n", key, value)
}
āĻāĻāĻāĻĒā§āĻ –Â
a -> apple
b -> banana
āĻāĻŋāύā§āϤ⧠āĻāĻŽāϰāĻž āĻāĻžāĻāϞ⧠āĻļā§āϧ⧠key āĻāĻžāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋ –Â
for key := range kvs {
fmt.Println("key:", key)
}
āĻāĻāĻāĻĒā§āĻ –Â
key: a
key: b