首頁 > 後端開發 > Golang > 主體

go語言有沒有while

青灯夜游
發布: 2023-01-07 14:20:50
原創
4237 人瀏覽過

go語言中沒有while關鍵字,不支援while和do-while循環結構。從功能上講,但凡while語句能做的事情,for語句也可以實現,因此Go語言統一了for語句和while語句。而Go的開發團隊有比較嚴重的潔癖,while並不是一個必要選項,提供多種方式讓開發者選擇,容易讓開發者迷路,產生選擇困難;所以乾脆不給選擇的機會,強制讓大家統一風格。

go語言有沒有while

本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

go語言中沒有while關鍵字,,不支援while和do-while循環結構。

迴圈語句用來重複執行某些程式中的語句。

程式語言中常見的迴圈語句包括while語句、do-while語句和for語句。但是Go語言中僅有for語言,沒有while語句。從功能上講,但凡while語句能做的事情,for語句也可以實現。因此Go語言統一了for語句和while語句。

且Go的開發團隊有比較嚴重的潔癖,while 並不是必要選項,提供多種方式讓開發者選擇,容易讓開發者迷路,產生選擇困難;所以乾脆不給選擇的機會,強制讓大家統一風格。

for語句

Go語言的for語句一共有三種:

第一種:

for init; condition; post {
	...	
}
登入後複製
  • init 一般為賦值表達式,用於循環控制變數及其他變數初始化。
  • condition 關係表達式和邏輯表達式,用於指示循環控制條件。
  • post 一般為賦值表達式,用於增減循環控制變數

以上三點等價於其他程式語言的for語句,因此第一種寫法等價於其他語言的for 語句。

第二種:

for condition {
	...
}
登入後複製

第二種寫法等價於其他語言的while語句。因為Go的for語句使不寫括號的,因此刪掉initpost就完全等價於了while語句。因此Go沒有引入while這個關鍵字,直接使用for語句實作while語句。

第三種:

for {
	...
}
登入後複製

第三種寫法等價於其他語言的for( ;;),也等價於while(true)

實例:

package main

import "fmt"

func main() {
	res := 1
	n := 10

	for i:=1; i<=n; i++ {
		res *= i
	}
	fmt.Println(n,"的阶乘是",res)
}

// 10 的阶乘是 3628800
登入後複製

for-each range

Go語言中for迴圈的range格式可以迭代slice、map、陣列、字串等類型,格式如下:

for k, v := range oldMap {
	newMap[k] = v
}
登入後複製

實例:

package main

import "fmt"

func main() {
	nums := [5]int{1, 2, 3, 4, 5}
	for i,e := range nums {
		fmt.Println("索引", i, "位置上的数值为", e)
	}
}

// 索引 0 位置上的数值为 1
// 索引 1 位置上的数值为 2
// 索引 2 位置上的数值为 3
// 索引 3 位置上的数值为 4
// 索引 4 位置上的数值为 5
登入後複製

同Python,Go語言也使用底線_來接住不需要的回傳值。

for _,e := range nums {
	...
}
登入後複製

【相關推薦:Go影片教學程式設計教學

#

以上是go語言有沒有while的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板