全球消息!Go语言中的变量和常量
一、变量相关
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关键字
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
X 关闭
X 关闭
- 1转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 2充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 3好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 4名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 5亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 6京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 7网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久
- 8市场竞争加剧,有车企因经营不善出现破产、退网、退市
- 9北京市市场监管局为企业纾困减负保护经济韧性
- 10市场监管总局发布限制商品过度包装标准和第1号修改单