我一直在写一个测试程序来帮助学习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")
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,无论是否声明变量"oError",编译器都不会指示错误.如果在未声明变量时(如预期的那样)该行包含以下内容,它也可以工作:
if oError := rwfile.WriteLines(asParams, sParamsFilename); oError != nil {
Run Code Online (Sandbox Code Playgroud)
如果我声明变量"oError",则":="不起作用(如预期的那样).
"rwfile"是我编写的包,有问题的函数如下所示:
func WriteLines(asBuff []string, sFilename string) error { // write text file
Run Code Online (Sandbox Code Playgroud)
如果我通过写入文件创建错误,并使用"="而不声明变量"oError",则程序正常工作并检测非零"oError"变量.
那么,当oError未被声明为变量时,为什么在上面使用"="时不被视为错误?
Go版本是go1.1.2 Windows/386.
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |