为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Go 编译器不将未声明的变量视为错误?

为什么 Go 编译器不将未声明的变量视为错误?

Go
慕少森 2021-06-27 13:56:10
我一直在编写一个测试程序来帮助学习 Go。这样做时,我遇到了一些我认为编译器应该检测到错误的情况。我遇到了另一个类似的情况,所以我想我应该问一下为什么这种情况不被视为错误。示例情况:if oError = rwfile.WriteLines(asParams, sParamsFilename); oError != nil {    fmt.Printf("Error on write to file Params. Error = %s\n", oError)} else {    println("Params file write OK")}在上面的示例中,无论是否声明了变量“oError”,编译器都不会指示错误。如果该行在未声明变量时包含以下内容(如预期),它也可以工作:if oError := rwfile.WriteLines(asParams, sParamsFilename); oError != nil {如果我声明变量“oError”,则“:=”不起作用(如预期)。“rwfile”是我写的一个包,有问题的函数如下:func WriteLines(asBuff []string, sFilename string) error { // write text file如果我在写入文件时创建错误,并使用“=”而不声明变量“oError”,则程序正常工作并检测到非零的“oError”变量。那么,当 oError 未声明为变量时,为什么上面的“=”不被视为错误?Go 版本为 go1.1.2 Windows/386。
查看完整描述

2 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

它与实际问题无关,但 `go fmt` 确实可以帮助跟踪大型程序中的错误内容。

此外,遵循样式指南确实有帮助:使用简洁的代码样式(没有匈牙利变量名!我花了很长时间才习惯短名称)和短文件:2Kloc 文件可能太大了。非常值得浏览标准库源代码,看看好的 Go 代码是什么样的


查看完整回答
反对 回复 2021-07-05
  • 2 回答
  • 0 关注
  • 206 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信