日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Go語言中的變量和常量_Golang

作者:奮斗的大橙子 ? 更新時間: 2022-09-03 編程語言

一、變量相關

1.變量聲明

C# : int a;

Go : var a int; 需要在前面加一個var關鍵字,后面定義類型

可以使用 var( a int; b string;)減少var

2.變量初始化

var a int = 10   // 正確的使用方式1
 
var a = 10       // 正確的使用方式2,編譯器可以自動推導出v2的類型
 
a := 10          // 正確的使用方式3,編譯器可以自動推導出v3的類型

在:=左側的變量不應該是已經被聲明過的

3.變量賦值

注意:Go語言的新特性 “Simultaneous Assignment” (平行賦值、多重賦值 ......)

a,b = b,a 可以方便的交換兩個數的值,之前的其他語言可能都需要加一個temp變量

對于這個我其實是有疑問的,就是Go語言是如何實現該功能的?按照我的想法如果是go語言底層也是按照加入一個變量的方式,那么豈不是輸出的a和b都是b的值了?達不到交換的目的。

大概結論就是,這個賦值操作可以看成一個原子操作。

4.匿名變量

Go可以定義匿名變量來減少不需要的代碼,例如,我只關心Value,不想打印Key的時候可以用“_”代替變量。同理對于有多個返回值的方法,可以用“_”代替我不想要的返回值,這樣就減少了變量的定義。

func main(){
       x:=make(map[string]int16)
       x["apple"] =100
       x["orange"] = 50
       x["pear"]=500
       for _,value := range x{
              fmt.Println(value);
       }
}

二、常量相關

1.字面常量

Go語言的字面常量是無類型的,可以被賦值給任何類型的變量。

例如 AConstNumber 可以賦值給int、float32等類型,但是賦值給string就出錯了

package main
import ( "fmt")

func main(){
       const AConstNumber = -100
       var x int = AConstNumber
       var y float32 = AConstNumber
       fmt.Println("x:",x)
       fmt.Println("y:",y)
}

2.預定義常量

Go語言預定義了這些常量:true、false和iota。

iota是個什么玩意?

iota比較特殊,可以被認為是一個可被編譯器修改的常量,在每一個const關鍵字出現時被 重置為0,然后在下一個const出現之前,每出現一次iota,其所代表的數字會自動增1。 (一個計數器?)

例如:

func main(){
       const(
              a = iota *100
              b = iota *100
              c = iota *100
       )
       const(
              d = iota *100
              e = iota *100
              f = iota *100
       )
       fmt.Println(a)  // 打印 0
       fmt.Println(b)  // 打印 100
       fmt.Println(c)  // 打印 200
       fmt.Println(d)  // 打印 0
       fmt.Println(e)  // 打印 100
       fmt.Println(f)  // 打印 200
}

所以 iota 這個東西用好了就能當枚舉使用了,正好Go語言不支持enum關鍵字

原文鏈接:https://www.cnblogs.com/dcz2015/p/10095969.html

欄目分類
最近更新