词汇文件名顺序是什么意思?

tar*_*lah 4 go lexicographic

在Go规范的包初始化部分,"词汇文件名顺序"是什么意思?

为了确保可重现的初始化行为,建议构建系统以词法文件名顺序将属于同一个包的多个文件呈现给编译器.

icz*_*cza 7

来自维基百科:

词汇顺序是对词的字母顺序基于其组成字母的字母顺序的方式的概括.

实际上,这意味着将文件名称作为字符串进行比较,使用字符代码来确定顺序.英文字母的字符代码顺序遵循字母的自然顺序,但如果非字母也是文件名的一部分(例如数字和其他字符等'-'),则字符代码顺序很重要.

如果包中包含多个源文件,则这只是定义源文件(任意)顺序的约定,如果重新编译包(当然文件未重命名),则该顺序保持不变.

目的是使源文件始终以相同的顺序处理,因此包init()函数也将以相同的顺序执行,您将观察到相同的行为.包init()函数的顺序通常无关紧要,但可能会出现这种情况.通过遵循此词法文件名顺序约定,您可以依赖init()函数的(固定)执行顺序.