go 路径/文件路径:使用Join连接文档不一致性与路径,

bxfogqkk  于 6个月前  发布在  Go
关注(0)|答案(7)|浏览(45)

这是对 #29875 的后续,该问题已关闭。
问题:

  1. 修复仅应用于 path.Join 文档,但 filepath.Join 也有相同的问题,也应该修复。
  2. 新的措辞省略了句子 "所有空字符串都被忽略",这使得 path.Join("", "foo") 结果为 "foo" 而不是 "/foo" 变得不明确。
    新内容:
    Join 将参数的路径元素连接成一个单独的路径,用斜杠分隔。结果是 Cleaned。然而,如果参数列表为空或其所有元素都为空,Join 将返回空字符串。
    旧内容:
    Join 将任意数量的路径元素连接成一个单独的路径,如果需要则添加分隔符。结果是 Cleaned;特别是,所有空字符串都会被忽略。
    我认为 Join 可以返回空字符串,但也应该清楚地知道开头的空字符串不会使路径变为绝对路径。
    顺便说一下,我也对 path.Dir 感到困惑:
    Dir 返回除最后一个元素外的所有路径,通常是路径的目录。在使用 Split 删除最后一个元素后,路径将被 Cleaned 并删除尾部的斜杠。如果路径为空,Dir 返回 "."。如果路径完全由斜杠后跟零个或多个非斜杠字节组成,Dir 返回一个斜杠。在其他任何情况下,返回的路径都不会以斜杠结尾。
    它可能应该读作 "如果路径完全由斜杠 可能 后跟零个或多个非斜杠字节" 或者 "如果路径完全由斜杠后跟 零个或多个 非斜杠字节",否则最后一句("在其他任何情况下 ...")就是错误的。
vqlkdk9b

vqlkdk9b1#

/cc @erutherford,他负责更新文档,@robpike,他是path的所有者。

pnwntuvh

pnwntuvh2#

对不起,我原本打算在周末回复这个问题,但最后生病了。
我认为应该明确一点,Join函数可以返回空字符串,但同时也应该明确,开头的空字符串并不会使路径变为绝对路径。
你说得对,这个本可以更清晰一些。在path.Join中,任何开头的空字符串都会被忽略。我可以今天晚些时候查看并更新这个问题,同时也会查看并更新filepath.Join
顺便说一下,我对path.Dir也感到困惑。
我会花时间去查看并更新这个问题。

3yhwsihp

3yhwsihp3#

https://golang.org/cl/207797提到了这个问题:path: minor changes to improve documentation for Join

gkl3eglg

gkl3eglg4#

@erutherford,谢谢!不着急,我总是不确定人们是否能看到我在已关闭问题上的回复。

idfiyjo8

idfiyjo85#

好的,@toothrot 和 @pam4 ,我已经为 path.Joinfilepath.Join 的更改提交了一个 CL。

sg24os4d

sg24os4d6#

@erutherford, "are"重复拼写错误在"任何前导空元素are are被忽略"中。
你的措辞SGTM,但考虑仅仅使用"Empty elements are ignored",因为非前导的它们在Clean之后没有任何区别。

ybzsozfc

ybzsozfc7#

感谢pam4的指正,我已经纠正了错误并采纳了你的建议。

相关问题