成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go 語(yǔ)言的變量與常量

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

[[391525]]

變量

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

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

  1. var name string = "Shenfq" 

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

多變量聲明

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

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

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

類型推導(dǎo)

如果我們?cè)谧兞柯暶麟A段,對(duì)變量進(jìn)行了賦值操作,這時(shí)候我們是可以直接省略變量類型的,因?yàn)?go 在編譯過(guò)程中會(huì)依據(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 

簡(jiǎn)短格式

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

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

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

⚠️注意事項(xiàng)一

這種聲明方式只能用于函數(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

⚠️注意事項(xiàng)二

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

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

 

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

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

全局變量與局部變量

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

局部變量如果有聲明,沒(méi)有進(jìn)行使用,則不會(huì)通過(guò)編譯。

  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)識(shí)符

前面介紹過(guò),go 在變量賦值的時(shí)候,可以一次性對(duì)多個(gè)變量賦值。同時(shí),go 的函數(shù)在 return 的時(shí)候,也能一次返回多個(gè)結(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 

上面我們實(shí)現(xiàn)了一個(gè) double 函數(shù),該函數(shù)接受一個(gè) int 類型的變量(num),返回兩個(gè)值,一個(gè)為異常提示(string 類型),一個(gè)為 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) 

 

運(yùn)行后,我們會(huì)收到一個(gè)編譯錯(cuò)誤,err 變量并未使用。這時(shí)候,就需要用到空白標(biāo)識(shí)符(_)。

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

我們可以通過(guò) _ 來(lái)接受 err 值,這個(gè)地方的值就會(huì)被拋棄掉,就能順利通過(guò)編譯。

常量

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

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

多常量聲明

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

  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) 

 

如果一次聲明多個(gè)常量時(shí),某個(gè)常量如果為進(jìn)行賦值,默認(rèn)會(huì)與上一個(gè)常量的值進(jìn)行同步。下面代碼的運(yù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) 

特殊常量

有個(gè)叫做 iota 的特殊常量,在常量的賦值過(guò)程中,會(huì)進(jìn)行累加。

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

在 iota 累加的過(guò)程中,可以對(duì)其進(jìn)行打斷。

  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) 

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

這是由于我們將常量 C 修改為了字符串 "Shenfq",常量 D、E 會(huì)默認(rèn)與上一條常量保持同步,所以會(huì)得到上述結(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 開(kāi)始的。

iota 這種累加的特性,特別像我們?cè)谄渌Z(yǔ)言中使用的枚舉,所以在 go 語(yǔ)言中,我們可以直接將 iota 當(dāng)做枚舉來(lái)使用。

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

 

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

2022-07-31 23:05:55

Go語(yǔ)言短變量

2021-03-25 12:00:18

Python變量常量

2021-07-30 07:28:15

WorkerPoolGo語(yǔ)言

2021-04-13 07:58:42

Go語(yǔ)言函數(shù)

2024-01-04 07:49:00

Go語(yǔ)言方法

2021-04-20 09:00:48

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

2021-07-13 06:44:04

Go語(yǔ)言數(shù)組

2020-07-07 07:00:00

RustGo語(yǔ)言編程語(yǔ)言

2021-04-25 08:11:57

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

2010-03-22 13:49:20

2024-12-13 16:28:43

2023-12-15 14:38:00

GoRust編程語(yǔ)言

2021-11-06 10:18:30

Python變量常量

2022-06-22 09:24:30

云原生Go 語(yǔ)言

2023-09-21 22:02:22

Go語(yǔ)言高級(jí)特性

2012-10-08 09:25:59

GoGo語(yǔ)言開(kāi)發(fā)語(yǔ)言

2024-03-01 20:16:03

GoRust語(yǔ)言

2018-03-12 22:13:46

GO語(yǔ)言編程軟件

2025-03-31 00:29:44

2011-12-15 09:00:51

PHP 7
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欧美日韩久久 | 香蕉视频黄色 | 中文字幕一区二区三区乱码在线 | 亚洲一区二区三区在线视频 | 国产成人网 | 一本色道精品久久一区二区三区 | 欧美日韩一区在线播放 | 亚洲一区二区在线 | 婷婷综合五月天 | 欧美黑人国产人伦爽爽爽 | 国产黑丝在线 | 网站黄色在线免费观看 | 精品一区久久 | 成人在线视频免费观看 | 国产日产精品一区二区三区四区 | 亚洲精品在线国产 | 综合九九| 国产中文视频 | 91精品国产综合久久久久久丝袜 | 国产成人福利 | 免费一区 | 99这里只有精品 | 国产视频久久久 | 国产性生活一级片 | 国产成人免费视频网站视频社区 | 精品九九久久 | 羞羞视频网站免费看 | 欧美色图另类 | 视频精品一区 | 亚洲一区二区精品视频在线观看 | www.99热这里只有精品 | 最近中文字幕免费 | 中文字幕在线免费视频 | 久久久毛片 | 欧美在线一区二区三区 | 日本一区二区三区精品视频 | 精品免费在线 | 亚洲iv一区二区三区 | 色婷婷激情综合 | 岛国视频| 精品无码三级在线观看视频 |