1. 程式人生 > >Go開發之路 -- Go語言基本語法

Go開發之路 -- Go語言基本語法

1.5 變量交換 數據類型 UNC 賦值 初始 寫法 調用 關鍵字

一. 變量

1.1 變量的聲明

Go 語言的每一個變量都擁有自己的類型,必須經過聲明才能開始用。

標準格式:

var 變量名 變量類型

變量的聲明以關鍵字 var 開頭,行尾不需要寫分號

常見變量的數據類型有:整型、浮點型、布爾型、結構體等。

例如:

var a int
var b string
var c []float32
var d func() bool
var e struct{
    x int
}

代碼說明:

  • 第1行,聲明一個整型類型的變量,可以保存整數數值。
  • 第2行,聲明一個字符串類型的變量。
  • 第3行,聲明一個 32 位浮點切片類型的變量,浮點切片表示由多個浮點類型組成的數據結構。
  • 第4行,聲明一個返回值為布爾類型的函數變量,這種形式一般用於回調函數,即將函數以變量的形式保存下來,在需要的時候重新調用這個函數。
  • 第5行,聲明一個結構體類型的變量,這個結構體擁有一個整型的 x 字段。

優雅格式聲明(推薦):

var (
    a int
    b string
    c []float32
    d func() bool
    e struct {
        x int
    }
)

使用關鍵字var和括號,可以將一組變量定義放在一起。 

1.2 變量的初始化

變量的聲明可以包含初始值,每一個變量對應一個值。

如果初始化值已存在,則可以省略類型;變量會從初始值中獲得類型。

變量初始化的標準格式:

var 變量名 類型 = 表達式

簡化形式:

var 變量名 = 表達式

例如:

var x int = 100

可以寫成:

var x = 100

默認值:

沒有明確初始值的變量聲明會被賦予它們一個默認值:

整型和浮點型變量的默認值為 0。
字符串變量的默認值為空字符串。
布爾型變量默認為 bool。
切片、函數、指針變量的默認為 nil。

1.3 短變量聲明並初始化

在函數中,簡潔賦值語句 := 可在類型明確的地方代替 var 聲明。

註意:函數外的每個語句都必須以關鍵字開始(var等),因此 := 結構不能在函數外使用。

例如:

x := 100

編譯器會自動根據右值類型推斷出左值的對應類型。

註意:由於使用了 :=,而不是賦值的 =,因此推導聲明寫法的左值變量必須是沒有定義過的變量。若定義過,將會發生編譯錯誤。


註意:在多個短變量聲明和賦值中,至少有一個新聲明的變量出現在左值中,即便其他變量名可能是重復聲明的,編譯器也不會報錯,例如:

x, z := a, b
y, z := a, b

1.4 多個變量同時賦值

使用Go的“多重賦值特性”,可以輕松完成變量交換的任務。

package main
import "fmt"

func main() {
    var a = 100
    var b = 200
    a, b = b, a
    fmt.Println(a, b)
}

多重賦值時,變量的左值和右值按從左到右的順序賦值。

1.5 匿名變量(_)

在使用多重賦值時,如果不需要在左值中接收變量,可以使用匿名變量。

匿名變量用一個下劃線 _ 來表示,使用匿名變量時,只需要在變量聲明的地方使用下劃線替換即可。例如:

var a int
a, _ = 100, 200

註意:匿名變量不占用命名空間,不會分配內存。匿名變量與匿名變量之間也不會因為多次聲明而無法使用。

二. 常量

常量是恒定不變的值,例如圓周率。

常量的聲明與變量類似,只不過是使用 const 關鍵字。

常量可以是字符、字符串、布爾值和數值。

常量不能用 := 語法聲明。

常量的聲明, 例如:

const pi = 3.1415926

註意:常量在聲明的時候必須賦值。

多個變量可以一起聲明,類似的,多個變量也可以一起聲明。例如:

const (
    pi = 3.1415926
    e = 2.718281
)

三. 數據類型

四. 數據類型的轉換

Go開發之路 -- Go語言基本語法