Home
Write
Language
Login
阿坦
@37157522
多个变量声明与赋值同时进行
编程 Go 语言入门 Golang
2022-09-01 09:37
Words count: 507
在 Go 语言里,同一个变量(即名字相同)在同一个作用域只能声明一次。同时 Go 语言支持用 1 个 "=" 同时声明多个变量。有时我们会看到,一个变量被“声明”了多次,程序依然正常工作,这是什么情况?

一个变量只声明一次

在 Go 语言里,同一个变量(即名字相同)在同一个作用域只能声明一次。如果声明 两次,就会编译错误:

// package and import statements omitted

func main() {
    a := 1
    a := 2
}

==”no new variables on left side of :=”==

学习这样的小知识点时咱们总是觉得很简单,可是有没有发现,当我们走到一些别的代码中,往往又会被搞晕?比如:

// package and import statements omitted

func main() {
    var err error = nil
    a, err := strconv.ParseFloat("23", 64)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(a)
}

上面这段代码中,err 变量不是在 main 函数的第一行代码就声明了吗?为什么在第二行代码中再次声明它,结果却没有编译错误?

Head First Go1 这本书中给出了答案:

在多个变量的短变量声明中,只要其中有一个变量是之前没有声明过的,声明就是合法的。(在此之前已经被声明过的变量会被当作赋值来对待。)

所以上面代码中 main 函数第二句 a, err := strconv.ParseFloat("23", 64) 是合法的,因为 a 变量在这之前还没有被声明过。而已经被声明过的 err 变量会被当作赋值来对待。

  1. Jay McGavren. Head First Go. Ed. Jeff Bleiel. Canada:O’Reilly Media, 2019. Electronic. ↩

Reward
0 0
0 times bought
•
0 times reward
0.0
Price(BTC)
0
Paid Times
$0.0
Revenue
0.0%
My Share(%)
Comments 0
Subscribe
阿坦
@37157522
Subscribing: 45 Subscribers: 117
潮起潮落是什么都不为
Subscribe
Related Posts
Defi乐高之借贷协议(2)--MarginFi 隐身3个月通关编程实战项目,升级进取型思维分享。 macOS系统多开Google Chrome浏览器 从小白到科学家(二)之脱胎换骨 Invoke the closed source contract tutorial with MetaMask
Rules Stats Help Github Twitter Discord

Login

Read, write, and earn crypto rewards.

Connect Wallet
阿坦
@37157522
Subscribing: 45 Subscribers: 117
潮起潮落是什么都不为
Subscribe
Related Posts
Defi乐高之借贷协议(2)--MarginFi 隐身3个月通关编程实战项目,升级进取型思维分享。 macOS系统多开Google Chrome浏览器 从小白到科学家(二)之脱胎换骨 Invoke the closed source contract tutorial with MetaMask
Rules Stats Help Github Twitter Discord