iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0
DevOps

欸你這週GO了嘛系列 第 9

[DAY9]來學GO迴圈

GO的迴圈就二種FOR跟FOR
https://ithelp.ithome.com.tw/upload/images/20200915/201295152LYZ6CC5Rk.png
沒啦~~~~
一種是每種語言都八十七分像的

package main

func main() {
	for i := 0; i < count; i++ {
		
	}
}

另一種是for range

package main

func main() {
	for _, var := range var {
		
	}
}

先說結論,二種都一樣,看情境選擇使用就好~個人是偏好用FOR RANGE寫法就是

FOR LOOP

先來看看計數至最大值,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)
}

要如何終止或是跳過呢

  • break(終止):跳離迴圈
  • continue(跳過):跳出這次執行,然後程式會繼續跑下一筆
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
		}
	}
}

注意一點,INDEX值不可大於資料筆數,不然執行到大於資料筆數時就會噴掉了嘿~~

FOR RANGE

這寫法有個用語叫迭代器,可走訪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

個人因為不是很愛goto的用法,維護成本會拉很高..有興趣的人可以自行google一下


上一篇
[DAY8]GO的條件敘述、選擇性敘述
下一篇
[DAY10]一起來陷入function地獄吧
系列文
欸你這週GO了嘛30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言