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 buildgo install 调用来构建程序的竞速启用版本。

具有数据竞争的 Go 程序的行为是未定义的。Go 程序中没有安全的数据竞争。

延伸阅读

提问

获得帮助的最佳方式是展示

  1. 你所做的,最好是使用一个小型、完整、独立的示例。如果你运行了一个命令,请展示你运行的命令。如果你的程序失败,请提供失败程序的源代码。如果程序太大,或者你无法分享源代码,请提供一个自包含的可运行示例,以展示问题。
  2. 你期望发生的事情。如果你期望命令成功完成,请说明。如果你期望程序产生特定的输出,请提供你期望的输出示例。
  3. 实际发生的事情。如果命令失败,请包含失败的完整输出,而不仅仅是你认为是原因的那一行。如果程序未能产生预期的输出,请包含它实际输出的内容。

其他提示


此内容是 Go Wiki 的一部分。