GO的迴圈就二種FOR跟FOR
沒啦~~~~
一種是每種語言都八十七分像的
package main
func main() {
for i := 0; i < count; i++ {
}
}
另一種是for range
package main
func main() {
for _, var := range var {
}
}
先說結論,二種都一樣,看情境選擇使用就好~個人是偏好用FOR RANGE寫法就是
先來看看計數至最大值,c#與js也是相同寫法
package main
import "fmt"
func main() {
var test = []int64{1, 2, 3, 4, 5, 6, 7}
//count為test裡面的資料數
count := len(test)
//go slice或是array的第一筆為0喔
for i := 0; i < count; i++ {
fmt.Println("test[", i, "]=", test[i])
}
}
test[ 0 ]= 1
test[ 1 ]= 2
test[ 2 ]= 3
test[ 3 ]= 4
test[ 4 ]= 5
test[ 5 ]= 6
test[ 6 ]= 7
還有一種是滿足條件時就離開的寫法,有寫C#的人應該知道while寫法
//c#的寫法是不是跟GO的八十七分像呢~~
int counter = 0;
while (counter < 10)
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
}
package main
import "fmt"
func main() {
i := 0
//當i的值小於10時,每次執行都累加1
for i < 10 {
i++
}
fmt.Println("i:", i)
}
還一種無盡迴圈執行的寫法,這種寫法一般是拿來卡住程式,不然讓它結束掉用。
i := 0
//會一直累加1~~直到手動結束程式
for{
i++
fmt.Println("i:", i)
}
要如何終止或是跳過呢
package main
import "fmt"
func main() {
count := 20
for i := 0; i < count; i++ {
if (i % 2) == 0 {
fmt.Println("我是偶數:", i)
//遇到continue就是跳離這次執行,所以不會印下面的字
continue
}
fmt.Println("我是奇數:", i)
if i == 15 {
fmt.Println("我只是跟著鄉民來看戲R")
//遇到break表示要中離這次迴離
break
}
}
}
這寫法有個用語叫迭代器,可走訪ARRAY、SLICE與MAP內部的資料,簡單說就是不用知道筆數多少,直接從第一筆跑到最後一筆啦~~~
package main
import "fmt"
func main() {
var test = []int64{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
//key等於slice,map中的資料index,或是map中的key值
//value等於slicea,rray,map中的資料對應值
for key, value := range test {
fmt.Println("Key:", key, "value:", value)
if (value % 2) == 0 {
fmt.Println("我是偶數:", value)
//遇到continue就是跳離這次執行,所以不會印下面的字
continue
}
fmt.Println("我是奇數:", value)
if value == 9 {
fmt.Println("我只是跟著鄉民來看戲R")
//遇到break表示要中離這次迴離
break
}
}
}
還有一個是禁之用法
個人因為不是很愛goto的用法,維護成本會拉很高..有興趣的人可以自行google一下