go語言變數
變數是所有語言中最基本的元素,程式可以通過定義一個變數來申請一塊資料的記憶體空間。GO語言的變數使用方式和C語言接近,但更具備強大的靈活性。
1.變數宣告
GO語言的變數宣告方式與C和C++語言有明顯的不同。對於純粹的變數宣告,GO語言引入了關鍵字var,而型別資訊放在變數名之後,示例如下:
var v1 int //整型
var v2 stirng //字元型
var v3[10]int //陣列
var v4 []int //陣列切片
var v5 struct{
f int
}
var v6 *int //指標
var v7 map[string]int //map key為string型別 value為int型別
var v8 func(a int) int
變數語句宣告不需要使用分號作為結束符。與其他面嚮物件語言相比,GO語言摒棄了語句必須以分號作為語句結束標記的習慣。
var關鍵字的另一種用法是可以將若干個需要宣告的變數放在一起,免得程式設計師需要重複寫var關鍵字。
var{
v1 int
v2 stinrg
}
2 變數初始化
變數初始化的時候可以不再使用var關鍵字
import (
"fmt"
)
func main() {
var v1 int = 10
var v2 = 20
v3 := 30
fmt.Println(v1)
fmt.Println(v2)
fmt.Println(v3)
}
這裡要注意,如果光宣告不使用go語言會提示錯誤。以上三種用法的效果是完全一樣的,除了第三種宣告方式不能用於宣告全域性變數。指定型別已經不再是必須得了,甚至關鍵字都可以省略,GO編譯器可以從初始化表示式的右值推匯出該變數應該宣告為哪種型別,這讓Go語言看起來有點像動態型別語言,但是其實Go語言是一個強型別的語言(靜態型別)。
3.變數賦值
在Go語法中,變數初始化和變數賦值是兩個不同的概念。下面為宣告一個變數之後的賦值過程
var v4 int
v4 = 111
Go語言的變數賦值與多數語言一致,但Go語言中提供了多重賦值功能,比如下面這個交換i和j變數的語句:
i, j = j, i
在不支援多重賦值的語言中,互動兩個變數的內容需要引入一箇中間變數
t=i;i=j;j=t;
4.匿名變數在使用傳統的強型別語言程式設計,例如java的時候,經常會出現這種情況,即在呼叫函式時為了獲取一個值,卻因為該函式返回多個值不得不去定義一堆沒用的變數,在Go中這種情況可以通過結合使用多重返回和匿名變數來避免這種醜陋的寫法,讓程式碼看起來更加優雅。
func getName() (firstName, lastName, nickName string) {
return "aaaa", "bbbb", "cccc"
}
//Test()和Test2()在包外也可見
func Test() int {
_, _, nickName := getName() //GetName呼叫只選擇需要的變數將他返回
fmt.Println("nikName = ", nickName, "\n")
return 0
}
這種寫法可以讓程式碼非常清晰,基本上遮蔽掉了可能混淆程式碼閱讀者視線的內容,從而大幅度降低溝通的複雜度和程式碼維護的難度。 相關文章
- GO語言————4.4 變數Go變數
- 初學Go語言 變數Go變數
- Go 語言變數作用域Go變數
- Go 語言入門教程:變數Go變數
- Go語言變數生命期和變數逃逸分析Go變數
- go語言 變數的宣告與使用Go變數
- Go語言變數的生命週期Go變數
- GO語言變數作用域-坑記錄Go變數
- go語言變數的宣告與賦值Go變數賦值
- 第四節 go 語言變數定義Go變數
- GO語言————6.3 傳遞變長引數Go
- GO語言linux下環境變數GoLinux變數
- GO語言基礎(結構+語法+型別+變數)Go型別變數
- go語言變數宣告後的預設值Go變數
- go語言採坑:閉包共享變數問題Go變數
- Go語言學習(3) - 變數與初始化Go變數
- 《快學 Go 語言》第 2 課 —— 變數基礎Go變數
- 用 Go 語言讀取專案內 .env 環境變數Go變數
- 三分鐘學會go語言的變數定義Go變數
- Go 1.21的2個語言變化Go
- Go語言————1、初識GO語言Go
- go語言獲取外部引數Go
- Go語言中的變數作用域Go變數
- GO語言Go
- Go 語言核心知識(一)--- 環境變數和原始碼檔案Go變數原始碼
- GO語言————2、GO語言環境安裝Go
- C語言sizeof()變數、字元、字串C語言變數字元字串
- Go語言之變數逃逸(Escape Analysis)分析Go變數
- 《快學 Go 語言》第 2 課 —— 變數什麼的最討厭了Go變數
- Go語言的變數、函式、Socks5代理伺服器Go變數函式伺服器
- Go_go語言初探Go
- 【Go語言入門系列】(八)Go語言是不是面嚮物件語言?Go物件
- go 語言常量Go
- Go語言mapGo
- go 語言切片Go
- go語言使用Go
- 一個檔案的內容變成一個 go 語言的變數的小工具Go變數
- C語言可變引數詳解C語言