去语言警告和错误

时间:2011-08-14 20:46:37

标签: go

似乎GO语言中没有警告。我观察过 几个例子。 1.“声明且未使用”(如果变量已声明且未使用 任何地方它给出错误并且不编译程序) 2.“导入和未使用”(类似地,如果包是导入的而不是 在任何地方使用它会出错并且不编译程序) 有人可以帮忙。如果他们有任何指示。

4 个答案:

答案 0 :(得分:13)

Go试图阻止这种情况:

  

男孩正在抽烟,并将烟圈留在空中。女孩得到了   对烟雾感到恼火,并对她的情人说:“你看不到了   警告写在香烟包上,吸烟是有害的   健康!“

     

男孩回答:“亲爱的,我是程序员。我们不担心   关于警告,我们只担心错误。“

基本上,Go只是不会让你逃脱未使用的变量和未使用的导入以及其他通常是其他语言警告的东西。它有助于养成良好的习惯。

答案 1 :(得分:13)

  

Go编程语言   常见问题

     

Can I stop these complaints about my unused variable/import?

     

未使用的变量的存在可能表示错误,而未使用   导入只会减慢编译速度。累积足够的未使用的进口   在你的代码树中,事情会变得很慢。出于这些原因,Go   不允许。

     

在开发代码时,创建这些情境很常见   暂时,在之前编辑它们可能很烦人   程序将编译。

     

有些人要求使用编译器选项来关闭或关闭这些检查   最少将它们减少为警告。没有添加这样的选项,   但是,因为编译器选项不应该影响语义   语言,因为Go编译器不报告警告,   只有阻止编译的错误。

     

没有警告有两个原因。首先,如果值得的话   抱怨,值得在代码中修复。 (如果不是的话   值得修复,不值得一提。)其次,有编译器   生成警告鼓励实施警告弱者   可能使编译噪声,掩盖应该的真正错误的情况   修好。

     

但很容易解决这种情况。使用空白标识符   在你开发的过程中让未使用的东西持续存在。

import "unused"

// This declaration marks the import as used by referencing an
// item from the package.
var _ = unused.Item  // TODO: Delete before committing!

func main() {
    debugData := debug.Profile()
    _ = debugData // Used only during debugging.
    ....
}

答案 2 :(得分:1)

未使用的导入的一个解决方案是使用goimports,这是gofmt的一个分支。它会自动添加缺少的导入并删除未使用的导入(除了格式化代码)。

http://godoc.org/code.google.com/p/go.tools/cmd/goimports

我已经将编辑器配置为每当我保存代码时自动运行goimports。我无法想象现在没有它就写代码。

答案 3 :(得分:0)

根据我刚刚读的内容,(维基百科) “ Go的语法包括对C的更改,旨在保持代码的简洁和可读性。”

“简洁”一词对编译器非常重要。我发现了 编译器强制使用的语法不再是“ \ n”或空格 不可知论的。并且没有“警告”类型错误。

Go有很多好处。有一些不好的东西。的 无警告的态度有点极端,尤其是在开发或测试时 一个新包装。似乎部分开发是不可接受的。警告是不可接受的。它是生产版本或高速公路。这是非常二元的观点。我不知道进化是否会导致“生命”,如果那是对自然的制约。

我只能希望情况会改变。有时死亡似乎非常有益。 我尝试过Go,但我感到失望。在我这样的年龄,我不认为我会回来。