这是对 #29875 的后续,该问题已关闭。
问题:
- 修复仅应用于
path.Join
文档,但filepath.Join
也有相同的问题,也应该修复。 - 新的措辞省略了句子 "所有空字符串都被忽略",这使得
path.Join("", "foo")
结果为"foo"
而不是"/foo"
变得不明确。
新内容:
Join 将参数的路径元素连接成一个单独的路径,用斜杠分隔。结果是 Cleaned。然而,如果参数列表为空或其所有元素都为空,Join 将返回空字符串。
旧内容:
Join 将任意数量的路径元素连接成一个单独的路径,如果需要则添加分隔符。结果是 Cleaned;特别是,所有空字符串都会被忽略。
我认为Join
可以返回空字符串,但也应该清楚地知道开头的空字符串不会使路径变为绝对路径。
顺便说一下,我也对path.Dir
感到困惑:
Dir 返回除最后一个元素外的所有路径,通常是路径的目录。在使用 Split 删除最后一个元素后,路径将被 Cleaned 并删除尾部的斜杠。如果路径为空,Dir 返回 "."。如果路径完全由斜杠后跟零个或多个非斜杠字节组成,Dir 返回一个斜杠。在其他任何情况下,返回的路径都不会以斜杠结尾。
它可能应该读作 "如果路径完全由斜杠 可能 后跟零个或多个非斜杠字节" 或者 "如果路径完全由斜杠后跟 零个或多个 非斜杠字节",否则最后一句("在其他任何情况下 ...")就是错误的。
7条答案
按热度按时间vqlkdk9b1#
/cc @erutherford,他负责更新文档,@robpike,他是
path
的所有者。pnwntuvh2#
对不起,我原本打算在周末回复这个问题,但最后生病了。
我认为应该明确一点,Join函数可以返回空字符串,但同时也应该明确,开头的空字符串并不会使路径变为绝对路径。
你说得对,这个本可以更清晰一些。在
path.Join
中,任何开头的空字符串都会被忽略。我可以今天晚些时候查看并更新这个问题,同时也会查看并更新filepath.Join
。顺便说一下,我对path.Dir也感到困惑。
我会花时间去查看并更新这个问题。
3yhwsihp3#
https://golang.org/cl/207797提到了这个问题:
path: minor changes to improve documentation for Join
gkl3eglg4#
@erutherford,谢谢!不着急,我总是不确定人们是否能看到我在已关闭问题上的回复。
idfiyjo85#
好的,@toothrot 和 @pam4 ,我已经为
path.Join
和filepath.Join
的更改提交了一个 CL。sg24os4d6#
@erutherford, "are"重复拼写错误在"任何前导空元素are are被忽略"中。
你的措辞SGTM,但考虑仅仅使用"Empty elements are ignored",因为非前导的它们在
Clean
之后没有任何区别。ybzsozfc7#
感谢pam4的指正,我已经纠正了错误并采纳了你的建议。