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而言,容错性变差,仅这一点而言,性能会更好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容