Go中的短變數宣告運算符

Golang中的短變數宣告運算子(:=)用於建立具有唯一名稱和初始值的變數。使用該運算子的主要目的是宣告和初始化函數內部的局部變量,並縮小變數的範圍。變數的類型由表達式的類型決定。 var 關鍵字也用於建立特定類型的變數。因此可以說,在 Golang 中建立變數有兩種方法,如下所示:

Go中的短變數宣告運算符

  • 使用 var 關鍵字
  • 使用短變數宣告運算子(:=)

現在讓我們學習如何在 Golang 中使用短變數宣告運算子!

主要內容

Golang 中使用短變數宣告運算子的語法

variable_name := biểu thức hoặc giá trị

在這裡,您必須在聲明後立即初始化變數。但是使用var關鍵字可以避免在聲明時初始化。無需提及變數的類型。右側的表達式或值用於評估變數的類型。

例如:這裡我們使用短聲明運算子來宣告變量,而不指定變數的型別。變數的型別由運算子右邊的表達式的型別決定:=

// Minh họa chương trình Go dùng := (toán tử khai báo ngắn) 
package main

import "fmt"

func main() {

	// khai báo và khởi tạo biến
	a := 30

	// lấy một biến chuỗi
	Language: = "Go Programming"

	fmt.Println("The Value of a is: ", a)
	fmt.Println("The Value of Language is: ", Language)

}

結果:

The Value of a is:  30
The Value of Language is:  Go Programming

使用短聲明運算子聲明多個變數

短聲明運算子也可用於在單一聲明中聲明相同或不同類型的多個變數。這些變數的類型由運算子右側的表達式來評估:=

例如:

// Minh họa chương trình Go dùng toán tử khai báo ngắn := short để khai báo nhiều
// biến thành một câu lệnh khai báo duy nhất
package main

import "fmt"

func main() { 

// nhiều biến của cùng kiểu(int)
geek1, geek2, geek3 := 117, 7834, 5685

// nhiều biến của các kiểu khác nhau
geek4, geek5, geek6 := "GFG", 859.24, 1234

// Hiện giá trị và kiểu của biến
fmt.Printf("The value of geek1 is : %d\n", geek1) 
fmt.Printf("The type of geek1 is : %T\n", geek1) 

fmt.Printf("\nThe value of geek2 is : %d\n", geek2) 
fmt.Printf("The type of geek2 is : %T\n", geek2) 

fmt.Printf("\nThe value of geek3 is : %d\n", geek3) 
fmt.Printf("The type of geek3 is : %T\n", geek3)

fmt.Printf("\nThe value of geek4 is : %s\n", geek4) 
fmt.Printf("The type of geek4 is : %T\n", geek4)


fmt.Printf("\nThe value of geek5 is : %f\n", geek5) 
fmt.Printf("The type of geek5 is : %T\n", geek5)

fmt.Printf("\nThe value of geek6 is : %d\n", geek6) 
fmt.Printf("The type of geek6 is : %T\n", geek6)

} 

結果:

The value of geek1 is : 117
The type of geek1 is : int

The value of geek2 is : 7834
The type of geek2 is : int

The value of geek3 is : 5685
The type of geek3 is : int

The value of geek4 is : GFG
The type of geek4 is : string

The value of geek5 is : 859.240000
The type of geek5 is : float64

The value of geek6 is : 1234
The type of geek6 is : int

要記住的重點:

當運算子左側至少有一個變數:=被宣告為新變數時,可以使用短聲明運算子。短變數宣告運算子的作用類似於對同一詞法區塊內宣告的變數進行賦值。為了更好地理解這個概念,我們舉一個例子。

例1:下面的程式將拋出一個錯誤,因為運算子的左邊沒有新的變數:=

// Minh họa chương trình Go dùng khai báo biến ngắn
package main

import "fmt"

func main() { 

	// lấy hai biến
	p, q := 100, 200

	fmt.Println("Value of p ", p, "Value of q ", q)

	// Báo lỗi vì không có biến mới ở bên tay trái của :=
	p, q := 500, 600
	
	fmt.Println("Value of p ", p, "Value of q ", q)
}

錯誤:

./prog.go:17:10: no new variables on left side of := 

範例 2:

在下面的程式中,您可以看到行 geek3, geek2 := 456, 200 將正常工作而不會出現任何錯誤,因為運算符左側至少有一個新變量,即 geek3 :=

// Chương trình Go dùng toán tử khai báo biến ngắn
package main 

import "fmt"

func main() { 

// Ở đây, khai báo biến ngắn hoạt động
// như một phép gán cho biến geek1
// vì cùng một biến có trong cùng một khối
// do đó giá trị của geek2 được thay đổi từ 100 thành 200
geek1, geek2 := 78, 100

// ở đây, := được sử dụng như một phép gán cho geek2
// vì nó đã được khai báo. Ngoài ra, dòng này
// sẽ hoạt động tốt vì geek3 mới được tạo
// biến
geek3, geek2 := 456, 200

// Nếu bạn thử chạy các dòng được chú thích,
// thì trình biên dịch sẽ báo lỗi vì
// các biến này đã được định nghĩa
// geek1, geek2 := 745, 956
// geek3 := 150

// Hiện giá trị của các biến
fmt.Printf("The value of geek1 and geek2 is : %d %d\n", geek1, geek2) 
											
fmt.Printf("The value of geek3 and geek2 is : %d %d\n", geek3, geek2) 
} 

結果:

The value of geek1 and geek2 is : 78 200
The value of geek3 and geek2 is : 456 200

Go 是一種強型別語言,因為您無法將不同資料類型的值指派給宣告的變數。

例如:

// Minh họa chương trình Go dùng toán tử khai báo biến ngắn
package main 

import "fmt"

func main() { 

	// lấy một biến của int
	z := 50
	
	fmt.Printf("Value of z is %d", z)
	
	// gán lại giá trị của kiểu chuỗi
// nó sẽ đưa ra lỗi
	z := "Golang"
} 

錯誤:

./prog.go:16:4: no new variables on left side of := 
./prog.go:16:7: cannot use “Golang” (type string) as type int in assignment 
 

在簡短的變數宣告中,Golang 允許使用傳回多個值的函數呼叫來初始化一組變數。或者你可以說變數也可以被分配在運行時評估的值。

例如:

// Tại đây, hàm math.Max function trả về
// số lớn nhất trong biến i 
i := math.Max(x, y)

局部變數或全域變數

借助短變數宣告運算子(:=),可以宣告作用域僅在區塊層級的局部變數。一般情況下,局部變數是在函數區塊內部宣告的。如果您嘗試使用短聲明運算子聲明全域變量,則會收到錯誤。

例 1:

// Chương trình Go hiển thị cách sử dụng toán tử :=
// để khai báo các biến cục bộ
package main

import "fmt"

// sử dụng từ khóa var để khai báo
// và khởi tạo biến
// đó là package hoặc bạn có thể nói
// phạm vi cấp toàn cục
var geek1 = 900

// sử dụng khai báo biến ngắn
// sẽ báo lỗi
geek2 := 200

func main() {

// truy cập geek1 bên trong hàm
fmt.Println(geek1)

// truy cập geek2 bên trong hàm
fmt.Println(geek2)

}

錯誤:

./prog.go:15:1: syntax error: non-declaration statement outside function body 

範例 2:

// Chương trình Go dùng toán tử := operator
// để khai báo các biến cục bộ
package main 

import "fmt"

// dùng từ khóa var để khai báo
// và khởi tạo biến
// nó đóng gói hoặc bạn có thể báo
// phạm vi cấp toàn cục
var geek1 = 900


func main() { 

// dùng khai báo biến ngắn
// bên trong hàm chính
// nó có phạm vi cục bộ tức là không thể
// truy cập bên ngoài hàm chính
geek2 := 200

// truy cập geek1 bên trong hàm này
fmt.Println(geek1) 

// truy cập geek2 bên trong hàm này
fmt.Println(geek2) 
	
} 

結果:

900
200
Sign up and earn $1000 a day ⋙

Leave a Comment

ChatGPT 全球崩潰

ChatGPT 全球崩潰

11月22日上午,OpenAI的ChatGPT聊天機器人出現大面積問題,全球眾多用戶無法使用這款AI應用。

如何使用WiFi分析儀來提升您的Wi-Fi連接

如何使用WiFi分析儀來提升您的Wi-Fi連接

僅僅購買新的 Wi-Fi 路由器並不足以增強您的網路。為了充分利用您的 Wi-Fi,您需要確保獲得最佳的範圍、訊號和頻率。

身體與我們溝通的方式常常被忽視

身體與我們溝通的方式常常被忽視

我們的身體就像機器,不斷發出訊號和訊息,但我們很少注意它們。讓我們看看我們的身體想透過下面的訊號告訴我們什麼。

世界上最高的陸地動物

世界上最高的陸地動物

世界上最高的動物是?本文將為您總結陸地上最大的動物。

計算機中的基本測量單位

計算機中的基本測量單位

位元 (Bit) 是二進位數字 (Binary Digit) 的縮寫,是電腦記憶體中最小單位的術語,可以儲存兩種資訊狀態之一:0 或 1(可以理解為電腦中電晶體的開啟或關閉狀態)。

如何利用提醒功能改善你的筆記習慣

如何利用提醒功能改善你的筆記習慣

良好的記憶習慣始於提醒——它們在正確的時間出現,捕捉那些轉瞬即逝的想法。

7 款免費應用,幫助你瞬間提升手機拍照質量

7 款免費應用,幫助你瞬間提升手機拍照質量

仍有許多免費且功能強大的攝影工具可用於增強您的照片。

讓 Google 搜尋小工具更實用的技巧

讓 Google 搜尋小工具更實用的技巧

Google 搜尋小工具可讓您快速存取 Google 搜尋和發現提要,以及語音搜尋和 Google Lens。

如何登入並關閉密碼過期提醒

如何登入並關閉密碼過期提醒

如果您在 Windows 登入畫面上看到「您的密碼已過期,必須變更」訊息,這是因為 Windows 本機帳戶的密碼預設每 42 天過期一次。

如何在 Chrome、Coc Coc 上將 WebP 圖片轉換為 PNG、JPG

如何在 Chrome、Coc Coc 上將 WebP 圖片轉換為 PNG、JPG

要將 WebP 圖像轉換為 PNG 和 JPG 格式,我們可以透過多種不同的方式來完成,例如直接在圖像 URL 上進行轉換或使用圖像轉換工具。

ChatGPT 畫布模式的 4 種使用方法

ChatGPT 畫布模式的 4 種使用方法

ChatGPT 的新 Canvas 模式為世界領先的生成式 AI 引擎中的寫作和編輯增添了新的維度。

人們最不喜歡人工智慧照片編輯器的地方

人們最不喜歡人工智慧照片編輯器的地方

雖然 AI 照片編輯器可以顯著簡化您的編輯工作流程,但它們還遠非完美。用戶不喜歡它們的一些方面,在今天的文章中,您將發現它們是什麼。

修復 Google Play Store 無法自動更新應用程式的問題

修復 Google Play Store 無法自動更新應用程式的問題

當 Play Store 不自動更新應用程式時,使用者可能會錯過新功能、安全性修補程式和錯誤修復。幸運的是,您可以按照以下步驟設定 Google Play 商店以自動更新您的應用程式。

任天堂透過虛擬遊戲卡徹底改變了數位遊戲的共享方式

任天堂透過虛擬遊戲卡徹底改變了數位遊戲的共享方式

任天堂在任天堂直面會上正式推出了虛擬遊戲卡系統,此舉徹底改變了數位遊戲的發行方式。

使用 Messenger 在手機和電腦上傳送文件的說明

使用 Messenger 在手機和電腦上傳送文件的說明

除了在 Messenger 上發送照片外,用戶現在還可以透過該應用程式向其他人發送文件,包括所有文件文件格式,例如 pdf、doc、xlx...