go语言陷阱之二:Unused Variables

继续来控go语言的陷阱,今天来一发go语言中未使用变量的陷阱,不使用就扔掉嘛,go语言发明人如是说…
先来看坑:

package main

var gvar int //not an error

func main() {
    var one int   //error, unused variable
    two := 2      //error, unused variable
    var three int //error, even though it's assigned 3 on the next line
    three = 3
}
    运行结果
./hello.go:6: one declared and not used
./hello.go:7: two declared and not used
./hello.go:8: three declared and not used

好吧,one、two、three这三个变量都有问题。one只是作了声明,two赋值,three先声明后赋值,本质上这三个变量都没有被使用。
来看正确的写法:

package main

import "fmt"
package main

import "fmt"

func main() {
    var one int
    _ = one
    fmt.Println(one)
    two := 2
    fmt.Println(two)

    var three int
    three = 3
    one = three

    var four int
    four = four
}
运行结果
0
2

对于未赋值的整型变量one,go默认赋值为0。由正确的写法可以看出,在go中,对于使用的定义,是变量需要出现在赋值号的右边,变量才被认为使用了。go的这种设计很合理,运行程序的过程中,减少了一些不必要的判断与赋值,相对一python而言,容错性变差,仅这一点而言,性能会更好。

    原文作者:wu_sphinx
    原文地址: https://www.jianshu.com/p/39c1420a5e53
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞