一般来说,在所有的Go库中,有一些隐含的文档规则。正如@bradfitz所言:未声明的假设是并发使用不安全,零值不可用,实现忠实地实现了接口,且只有一个非零且有意义的返回值。这是一个非常重要的知识片段,我认为它应该被记录在某个地方。我不知道这个地方是否应该是“Effective Go”(特别是考虑到#28782),但感觉新人在开始浏览Go文档或编写Go代码之前应该了解这一点。
yacmzcpb1#
@davecheney的博客文章和演讲是这些资源的好来源。(我肯定还有其他资源,但他的首先出现在我的脑海中。)
u3r8eeie2#
请注意,尤其是Effective Go被提议冻结(#28782),所以这可能不是一个很好的位置。尽管如此,Tour、FAQ或How to Write Go Code似乎都是合理的候选者。
u7up0aaq3#
在未声明的情况下,假设事物不适合并发使用,零值不可用,实现应忠实地实现接口,并且***只有一个非零且有意义的返回值***。当然,至少这两个假设需要被正式记录下来?最后一个尤其让我陷入了无尽的焦虑,因此即使我知道可能不需要检查nil和零值复合物的结果值,但我还是会这样做,只是为了确保准确性和我的理智。特别是,如果官方文档明确指出nil错误期望一个非nil或非零值的复合结果,除非另有说明,我会感到非常欣慰。反之亦然;一个非nil错误期望一个零值结果,除非另有说明(尽管这个更容易直观理解,但看到它被正式记录下来仍然是一件好事)。
xxslljrj4#
@Justin-Marks 哪里是存放这个文档的好地方?你在哪里会看到这个?谢谢。
gfttwv5a5#
我总是想引用默认情况下的“不适用于并发使用”的假设,每次都要花上十分钟左右的时间才能再次找到这里:)既然 #61940 正在发生,我们正在获得像 https://go.dev/doc/modules/layout 这样的新有用的文档页面,我想应该很容易找到这个新页面的位置。如果能就它的位置做出决定,我很乐意作为 CL 写一份初稿。一些想法:
/doc/api
5条答案
按热度按时间yacmzcpb1#
@davecheney的博客文章和演讲是这些资源的好来源。(我肯定还有其他资源,但他的首先出现在我的脑海中。)
u3r8eeie2#
请注意,尤其是Effective Go被提议冻结(#28782),所以这可能不是一个很好的位置。尽管如此,Tour、FAQ或How to Write Go Code似乎都是合理的候选者。
u7up0aaq3#
在未声明的情况下,假设事物不适合并发使用,零值不可用,实现应忠实地实现接口,并且***只有一个非零且有意义的返回值***。
当然,至少这两个假设需要被正式记录下来?最后一个尤其让我陷入了无尽的焦虑,因此即使我知道可能不需要检查nil和零值复合物的结果值,但我还是会这样做,只是为了确保准确性和我的理智。
特别是,如果官方文档明确指出nil错误期望一个非nil或非零值的复合结果,除非另有说明,我会感到非常欣慰。反之亦然;一个非nil错误期望一个零值结果,除非另有说明(尽管这个更容易直观理解,但看到它被正式记录下来仍然是一件好事)。
xxslljrj4#
@Justin-Marks 哪里是存放这个文档的好地方?你在哪里会看到这个?谢谢。
gfttwv5a5#
我总是想引用默认情况下的“不适用于并发使用”的假设,每次都要花上十分钟左右的时间才能再次找到这里:)
既然 #61940 正在发生,我们正在获得像 https://go.dev/doc/modules/layout 这样的新有用的文档页面,我想应该很容易找到这个新页面的位置。
如果能就它的位置做出决定,我很乐意作为 CL 写一份初稿。一些想法:
/doc/api
的东西。