Go Wiki:如何寻求帮助
此页面提供了一些提示,说明如何在各种 Go 支持论坛 中成功寻求帮助。
在提出问题之前
在寻求帮助之前,请检查您是否已解决以下常见问题
始终检查所有错误
始终检查所有错误。通常会看到与以下代码类似的 nil 恐慌相关的报告问题
result, err := somefunction()
if err != nil {
log.Println("oops an error happened", err)
// return is missing here
}
// the code then continues to use result which is invalid.
或
result, _ := somefunction()
// code uses result which might be invalid
在寻求帮助之前,您应该确保您的代码正确处理了所有错误条件。
延伸阅读
检查您的代码是否没有数据竞争
意外的运行时恐慌通常是由程序中的数据竞争引起的。如果您的程序包含数据竞争,则需要在寻求帮助之前解决竞争。
如果您的程序具有良好的测试覆盖率,则可以通过向 go test
调用添加 -race
标志来测试竞争。
如果您的程序没有良好的测试覆盖率或仅在运行程序时发生崩溃,则可以通过将 -race
传递给 go build
或 go install
调用来构建程序的竞速启用版本。
具有数据竞争的 Go 程序的行为是未定义的。Go 程序中没有安全的数据竞争。
延伸阅读
提问
获得帮助的最佳方式是展示
- 你所做的,最好是使用一个小型、完整、独立的示例。如果你运行了一个命令,请展示你运行的命令。如果你的程序失败,请提供失败程序的源代码。如果程序太大,或者你无法分享源代码,请提供一个自包含的可运行示例,以展示问题。
- 你期望发生的事情。如果你期望命令成功完成,请说明。如果你期望程序产生特定的输出,请提供你期望的输出示例。
- 实际发生的事情。如果命令失败,请包含失败的完整输出,而不仅仅是你认为是原因的那一行。如果程序未能产生预期的输出,请包含它实际输出的内容。
其他提示
- 如果你要发布命令的输出,请粘贴文本,而不是文本的屏幕截图。如果它实际上是一张图片,那就没问题。
- 如果你要发布大量输出,你可以考虑使用粘贴或 gist 服务。
- 发布代码示例时,请使用 Go 游乐场(除非在你的国家/地区不可用)。
此内容是 Go Wiki 的一部分。