首頁 > 軟體

重學Go語言之變數與常數的宣告與使用詳解

2023-03-02 18:01:03

變數

什麼是變數?變數是一塊可以隨時存放資料的記憶體區域。在我們申請這塊記憶體區域(宣告變數)時,需要指定變數名以及變數的資料型別,資料型別用於說明變數可以存放什麼值。

Go是強型別語言,因此Go的變數需要先宣告再使用,且宣告後不可以改變其資料型別。

變數名

  • 變數名必須以字母或下劃線開頭。
  • 變數名區分大小寫,比如Versionversion是兩個不同的變數。
  • 不能用關鍵字(25個)和保留字(37個)給變數命名。

宣告

Go語言變數有兩種宣告方式,一種是標準的變數宣告,一種是簡短變數宣告。

標準宣告變數的方式

Go宣告一個變數的標準方式是使用關鍵字var,另外要注意的是Go變數的資料型別是放在變數名後面的,這點與其他語言不同:

宣告一個變數:

var i int
i = 10

宣告變數的時候給變數賦值

var i int = 10

在宣告不指定資料型別時,Go通過賦值來推斷其資料型別:

var i = 10

同時宣告多個同型別變數

var m,n int //在同一行宣告兩個型別相同的變數

同時宣告多個變數時,也可以賦初始值:

var q,p = "test",10

批次宣告變數:

var(
    s string = "test"
    r int
    t,f bool
)

簡短宣告變數的方式

除了用關鍵字var宣告變數外,Go還支援簡短的區域性變數宣告。

變數的簡短方式使用:=,且不需要指定資料型別,Go會根據宣告時賦予的值推斷資料語言:

注意,Go的區域性變數宣告後必須使用,否則會報錯。

package main 
​
i := 10 //錯誤
​
func main(){
    i := 10//根據賦值推斷i為整型
    i = 100//重新賦予整型的值
    i = "1" //錯誤,不能再賦予字串
}

變數作用域

Go是通過包(package)來組織來程式碼,對於在包內宣告的變數(或者函數、常數、結構體等)都是通過變數名的首字母是否大寫來區分是否包外可見,當首字母大寫時,則其他包可以存取該變數。

在一個包中定義兩個變數:

package A
​
var age int = 10 //包外不可見
​
var Username string = "test" //包外可見

接下來,我們在另一個包中引入上面的包:

package B
​
import A
import "fmt"
​
func main(){
  fmt.Println(A.Username)//可以存取
  fmt.Println(A.age) //錯誤,無法存取小寫字母開頭的變數
}

常數

變數的值在執行中可以隨時改變,而常數的值則在賦值後不能發生改變,常數的值在程式編譯時就已經確定,因此常數在宣告時必須賦值。

Go語言使用const關鍵來宣告一個常數。

const Version = "1.0"

const pi float = 3.14

像變數一樣宣告多個常數:

const (
	v1 = 100
	v2
	v3
)

上面這種宣告方式,常數v2v3的值100。

iota 常數生成器

有時候我們常常需要宣告一些有規則的常數,比說月份或是星期這樣的列舉值:

const (
    Sunday int = 0
    Monday int = 1
    Tuesday int = 2
    Wednesday int = 3
    Thursday int = 4
    Friday int = 5
    Saturday int = 6
)

上面這種宣告常數的方式就比較麻煩,每個常數值都需要賦值。

而用Go提供了iota常數生成器,在宣告這種有規則的常數時,可以避免一個一個常數初始化的麻煩:

const (
    Sunday int = iota
    Monday
    Tuesday 
    Wednesday
    Thursday 
    Friday
    Saturday
)

在這個例子中,iota所在第一行常數Sunday會被置為0,接下來的常數依次遞增。

使用_符號後,也可以跳過某個值或者中間插入其他值:

const (
		s1 = iota //0
		22        //1
		_         //跳過
		s4        //3
		s5        //4
		s6 = 100  //中間插入某個值
		s7 = iota //0
	)

iota也可計算後再賦給常數:

const (
	January Month = 1 + iota
	February
	March
	April
	May
	June
	July
	August
	September
	October
	November
	December
)

小結

Go的變數與常數的宣告是把資料型別放在變數名後面的,這點與其他程式語言不同,另外,變數和常數名首字母大小寫決定該變數或常數是否包外可見。

到此這篇關於重學Go語言之變數與常數的宣告與使用詳解的文章就介紹到這了,更多相關Go語言變數 常數內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com