中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go 語言的變量與常量的概念

發布時間:2021-07-12 13:47:31 來源:億速云 閱讀:160 作者:chen 欄目:編程語言

本篇內容主要講解“Go 語言的變量與常量的概念”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Go 語言的變量與常量的概念”吧!

變量

go 語言的變量聲明和大多數語言類似,通過 var 關鍵字聲明變量,只是 go 語言作為靜態類型語言,聲明變量時需要指定其類型。

下面的代碼表示聲明一個『name』變量,類型為『string』,并給其賦值『"Shenfq"』。

var name string = "Shenfq"

如果我們不進行賦值,這變量會獲得一個默認值,下面列舉一些 go 語言中的基礎類型及其默認值。

Go 語言的變量與常量的概念

多變量聲明

上面介紹 go 語言通過 var 關鍵字進行單個變量聲明,我們還可以通過 var 關鍵字進行多個變量的聲明:

  1. // 聲明兩個變量為同一類型 

  2. var firstName, lastName string 

  3. // 給兩個變量同時賦值 

  4. firstName, lastName = "frank", "shen" 


// 聲明兩個變量為不同類型 var (   age int  name string ) // 給兩個變量同時賦值 age, name = 25, "Shenfq"

類型推導

如果我們在變量聲明階段,對變量進行了賦值操作,這時候我們是可以直接省略變量類型的,因為 go 在編譯過程中會依據所賦予的初始值推導出其類型。

  1. var age = 25 

  2.  

  3. fmt.Printf("age 類型為:%T", age) // age 類型為:int 


var (   age = 18   name = "Shenfq" ) fmt.Printf("age 類型為:%T", age) // age 類型為:int fmt.Printf("name 類型為:%T", name) // name 類型為:string

簡短格式

前面介紹了變量聲明的時候,如果給定了初始值,go 在編譯階段可以進行類型推導。這種情況,go 提供了一種更簡單的聲明方式,通過 :=  的方式進行變量聲明,可以省略 var 關鍵字。

  1. func main() { 

  2.   age := 25 

  3.  name := "Shenfq" 


// 也可以進行多個變量同時賦值 func main() {   age, name := 25, "Shenfq" }

??注意事項一

這種聲明方式只能用于函數體內,不能用于全局變量的聲明。

// ?? 不能在全局使用這種方式聲明變量 age, name := 25, "Shenfq"  // 只能在函數體內使用該方式 func main() {  age, name := 25, "Shenfq"  fmt.Printf("age 類型為:%T", age)  fmt.Printf("name 類型為:%T", name) }

 Go 語言的變量與常量的概念

warning

??注意事項二

已經聲明過的變量,不能使用 := 的方式進行賦值。

func main() {   var age int  age := 25 }

 Go 語言的變量與常量的概念

已經聲明過的變量,只能通過 = 的方式進行賦值。

func main() {   var age int  age = 25 }

全局變量與局部變量

簡單來說,聲明在函數體外的變量為全局變量,聲明在函數體內的變量為局部變量。

局部變量如果有聲明,沒有進行使用,則不會通過編譯。

func main() {   var age int }

 Go 語言的變量與常量的概念

但是,全局變量是可以聲明而不使用的。

var age int func main() {  name := "Shenfq"  //fmt.Printf("age 類型為:%T", age)  fmt.Printf("name 類型為:%T", name) }

上面的代碼中,我們聲明了 age 全局變量,但是并未使用,可以正常編譯。

空白標識符

前面介紹過,go 在變量賦值的時候,可以一次性對多個變量賦值。同時,go 的函數在 return 的時候,也能一次返回多個結果。

func double(num int) (string, int) {  var err string  if num < 0 {   err = "num 不能為負數"   return err, -1  }  result := num * 2  return err, result }

上面我們實現了一個 double 函數,該函數接受一個 int 類型的變量(num),返回兩個值,一個為異常提示(string 類型),一個為 num *  2 的結果。如果 num < 0 , 則提示 num 不能負數。

func main() {  err, res := double(10)  if err != "" {   fmt.Printf(err)  } else {   fmt.Printf("結果為:%v", res)  } }

如果,我們并不關心 err ,只想執行 double 之后,輸出其結果。

func main() {  err, res := double(10)  fmt.Printf("結果為:%v", res) }

 Go 語言的變量與常量的概念

運行后,我們會收到一個編譯錯誤,err 變量并未使用。這時候,就需要用到空白標識符(_)。

func main() {  _, res := double(10)  fmt.Printf("結果為:%v", res) }

我們可以通過 _ 來接受 err 值,這個地方的值就會被拋棄掉,就能順利通過編譯。

常量

常量就是不會發生變化的變量,一旦聲明就不會改變。go 語言中,常量的聲明只需要將變量聲明時的 var 關鍵字替換為 const 關鍵字。

// 隱式類型定義 const PI = 3.14 // 顯式類型定義 const PI2 float  = 3.14

多常量聲明

與變量類似,常量也支持一次性聲明多個。

func main() {  const (   PI = 3.14   PI2 = 3.14  )  fmt.Printf("結果為:%v\n", PI)  fmt.Printf("結果為:%v\n", PI2) }

 Go 語言的變量與常量的概念

如果一次聲明多個常量時,某個常量如果為進行賦值,默認會與上一個常量的值進行同步。下面代碼的運行結果,與上面的代碼一致。

func main() {  const (   PI = 3.14   PI2  )  fmt.Printf("結果為:%v\n", PI)  fmt.Printf("結果為:%v\n", PI2) }

特殊常量

有個叫做 iota 的特殊常量,在常量的賦值過程中,會進行累加。

func main() {  const (   A = iota   B   C  )  fmt.Println(A, B, C) // 0 1 2 }

在 iota 累加的過程中,可以對其進行打斷。

func main() {  const (   A = iota   B   C = "Shenfq"     D     E  )  fmt.Println(A, B, C, D, E) }

這時候輸出的結果為:

Go 語言的變量與常量的概念

這是由于我們將常量 C 修改為了字符串 "Shenfq",常量 D、E 會默認與上一條常量保持同步,所以會得到上述結果。但是, iota  是支持重新恢復累加,只需要在指定位置重新賦值一次 iota 即可。

func main() {  const (   A = iota   B   C = "Shenfq"   D = iota // 恢復累加狀態   E  )  fmt.Println(A, B, C, D, E) }

由于 C 占用了原本 2 的位置,所以 D 恢復后,也是從 3 開始的。

Go 語言的變量與常量的概念

iota 這種累加的特性,特別像我們在其他語言中使用的枚舉,所以在 go 語言中,我們可以直接將 iota 當做枚舉來使用。

type ButtonType int const (   Default ButtonType = iota   Primary   Warning   Error )

到此,相信大家對“Go 語言的變量與常量的概念”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁阳县| 民丰县| 漾濞| 延安市| 集安市| 通河县| 枣阳市| 五原县| 恩平市| 安图县| 南通市| 湄潭县| 陵川县| 吴川市| 宁晋县| 新干县| 井冈山市| 涿州市| 电白县| 洮南市| 通江县| 民乐县| 石台县| 甘南县| 高密市| 贡觉县| 安吉县| 朝阳市| 博客| 镇远县| 罗平县| 渝北区| 安仁县| 通渭县| 文水县| 延川县| 青田县| 乌兰县| 虞城县| 营口市| 浦县|