自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Go 語言的變量與常量

開發(fā) 后端
go 語言的變量聲明和大多數(shù)語言類似,通過 var 關(guān)鍵字聲明變量,只是 go 語言作為靜態(tài)類型語言,聲明變量時需要指定其類型。

[[391525]]

變量

go 語言的變量聲明和大多數(shù)語言類似,通過 var 關(guān)鍵字聲明變量,只是 go 語言作為靜態(tài)類型語言,聲明變量時需要指定其類型。

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

  1. var name string = "Shenfq" 

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

多變量聲明

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

  1. // 聲明兩個變量為同一類型 
  2. var firstName, lastName string 
  3. // 給兩個變量同時賦值 
  4. firstName, lastName = "frank""shen" 

  1. // 聲明兩個變量為不同類型 
  2. var ( 
  3.   age int 
  4.  name string 
  5. // 給兩個變量同時賦值 
  6. age, name = 25, "Shenfq" 

類型推導(dǎo)

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

  1. var age = 25 
  2.  
  3. fmt.Printf("age 類型為:%T", age) // age 類型為:int 

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

簡短格式

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

  1. func main() { 
  2.   age := 25 
  3.  name := "Shenfq" 

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

⚠️注意事項一

這種聲明方式只能用于函數(shù)體內(nèi),不能用于全局變量的聲明。

  1. // ⚠️ 不能在全局使用這種方式聲明變量 
  2. age, name := 25, "Shenfq" 
  3.  
  4. // 只能在函數(shù)體內(nèi)使用該方式 
  5. func main() { 
  6.  age, name := 25, "Shenfq" 
  7.  fmt.Printf("age 類型為:%T", age) 
  8.  fmt.Printf("name 類型為:%T"name

 

warning

⚠️注意事項二

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

  1. func main() { 
  2.   var age int 
  3.  age := 25 

 

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

  1. func main() { 
  2.   var age int 
  3.  age = 25 

全局變量與局部變量

簡單來說,聲明在函數(shù)體外的變量為全局變量,聲明在函數(shù)體內(nèi)的變量為局部變量。

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

  1. func main() { 
  2.   var age int 

 

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

  1. var age int 
  2. func main() { 
  3.  name := "Shenfq" 
  4.  //fmt.Printf("age 類型為:%T", age) 
  5.  fmt.Printf("name 類型為:%T"name

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

空白標(biāo)識符

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

  1. func double(num int) (string, int) { 
  2.  var err string 
  3.  if num < 0 { 
  4.   err = "num 不能為負(fù)數(shù)" 
  5.   return err, -1 
  6.  } 
  7.  result := num * 2 
  8.  return err, result 

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

  1. func main() { 
  2.  err, res := double(10) 
  3.  if err != "" { 
  4.   fmt.Printf(err) 
  5.  } else { 
  6.   fmt.Printf("結(jié)果為:%v", res) 
  7.  } 

如果,我們并不關(guān)心 err ,只想執(zhí)行 double 之后,輸出其結(jié)果。

  1. func main() { 
  2.  err, res := double(10) 
  3.  fmt.Printf("結(jié)果為:%v", res) 

 

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

  1. func main() { 
  2.  _, res := double(10) 
  3.  fmt.Printf("結(jié)果為:%v", res) 

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

常量

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

  1. // 隱式類型定義 
  2. const PI = 3.14 
  3. // 顯式類型定義 
  4. const PI2 float  = 3.14 

多常量聲明

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

  1. func main() { 
  2.  const ( 
  3.   PI = 3.14 
  4.   PI2 = 3.14 
  5.  ) 
  6.  fmt.Printf("結(jié)果為:%v\n", PI) 
  7.  fmt.Printf("結(jié)果為:%v\n", PI2) 

 

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

  1. func main() { 
  2.  const ( 
  3.   PI = 3.14 
  4.   PI2 
  5.  ) 
  6.  fmt.Printf("結(jié)果為:%v\n", PI) 
  7.  fmt.Printf("結(jié)果為:%v\n", PI2) 

特殊常量

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

  1. func main() { 
  2.  const ( 
  3.   A = iota 
  4.   B 
  5.   C 
  6.  ) 
  7.  fmt.Println(A, B, C) // 0 1 2 

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

  1. func main() { 
  2.  const ( 
  3.   A = iota 
  4.   B 
  5.   C = "Shenfq" 
  6.     D 
  7.     E 
  8.  ) 
  9.  fmt.Println(A, B, C, D, E) 

這時候輸出的結(jié)果為:

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

  1. func main() { 
  2.  const ( 
  3.   A = iota 
  4.   B 
  5.   C = "Shenfq" 
  6.   D = iota // 恢復(fù)累加狀態(tài) 
  7.   E 
  8.  ) 
  9.  fmt.Println(A, B, C, D, E) 

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

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

  1. type ButtonType int 
  2. const ( 
  3.   Default ButtonType = iota 
  4.   Primary 
  5.   Warning 
  6.   Error 

 

責(zé)任編輯:姜華 來源: 自然醒的筆記本
相關(guān)推薦

2022-07-31 23:05:55

Go語言短變量

2021-03-25 12:00:18

Python變量常量

2024-01-04 07:49:00

Go語言方法

2021-07-30 07:28:15

WorkerPoolGo語言

2021-04-13 07:58:42

Go語言函數(shù)

2021-04-20 09:00:48

Go 語言結(jié)構(gòu)體type

2021-07-13 06:44:04

Go語言數(shù)組

2020-07-07 07:00:00

RustGo語言編程語言

2021-04-25 08:11:57

C語言常量與變量標(biāo)識符命名規(guī)范

2010-03-22 13:49:20

2021-11-06 10:18:30

Python變量常量

2023-12-15 14:38:00

GoRust編程語言

2024-12-13 16:28:43

2012-10-08 09:25:59

GoGo語言開發(fā)語言

2024-03-01 20:16:03

GoRust語言

2022-06-22 09:24:30

云原生Go 語言

2023-09-21 22:02:22

Go語言高級特性

2018-03-12 22:13:46

GO語言編程軟件

2011-12-15 09:00:51

PHP 7

2025-03-31 00:29:44

點贊
收藏

51CTO技術(shù)棧公眾號