清华尹成带你学习go语言教程(1)1.1 变量

1.1 变量

 

Go 是静态类型语⾔,不能在运⾏期改变变量类型。


使⽤关键字 var 定义变量,⾃动初始化为零值。如果提供初始化值,可省略变量类型,由

编译器⾃动推断。


var x int

var f float32 = 1.6

var s = "abc"

 

在函数内部,可⽤更简略的 ":=" ⽅式定义变量。

 

func main() {

x := 123

// 注意检查,是定义新局部变量,还是修改全局变量。该⽅式容易造成错误。

}

 

 

可⼀次定义多个变量。

 

 

var x, y, z int

var s, n = "abc", 123

 

var (

a int

b float32

)

 

func main() {

n, s := 0x1234, "Hello, World!"

println(x, s, n)

}


多变量赋值时,先计算所有相关值,然后再从左到右依次赋值。

data, i := [3]int{0, 1, 2}, 0

i, data[i] = 2, 100

// (i = 0) -> (i = 2), (data[0] = 100)

特殊只写变量 "_",⽤于忽略值占位

func test() (int, string) {

return 1, "abc"

}

func main() {

_, s := test()

println(s)

}

编译器会将未使⽤的局部变量当做错误。


var s string

func main() {

i := 0

// 全局变量没问题。

// Error: i declared and not used(可使⽤ "_ = i" 规避)

}

注意重新赋值与定义新同名变量的区别。

s := "abc"

println(&s)

s, y := "hello", 20

println(&s, y)

{

s, z := 1000, 30

println(&s, z)

// 重新赋值: 与前 s 在同⼀层次的代码块中,且有新的变量被定义。

// 通常函数多返回值 err 会被重复使⽤。

// 定义新同名变量: 不在同⼀层次代码块。


}

输出:

0x2210230f30

0x2210230f30 20

0x2210230f18 30

 

 




网址:http://www.qukuailianxueyuan.io/



欲领取造币技术与全套虚拟机资料

区块链技术交流QQ群:756146052  备注:CSDN

尹成学院微信:备注:CSDN






网址:http://www.qukuailianxueyuan.io/



欲领取造币技术与全套虚拟机资料

区块链技术交流QQ群:756146052  备注:CSDN

尹成学院微信:备注:CSDN


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成学院

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值