在Go规范的包初始化部分中,“词汇文件名顺序”是什么意思?
为了确保可重现的初始化行为,鼓励构建系统以词法文件名的顺序向编译器提供属于同一软件包的多个文件。
从维基百科:
词法顺序是词的字母顺序基于其组成字母的字母顺序的方式的概括。
实际上,这意味着将文件名作为字符串进行比较,使用字符代码确定顺序。英文字母的字符代码顺序遵循字母的自然顺序,但是如果文件名中也包含非字母(例如数字和其他字符,例如'-'),字符代码顺序就很重要。
'-'
如果一个包包含多个源文件,这只是定义源文件(任意)顺序的约定,如果重新编译该包(并且当然不重命名文件),则该顺序保持不变。
目的是使源文件始终以相同的顺序处理,因此包init()功能也将以相同的顺序执行,并且您将观察到相同的行为。包init()功能的顺序通常无关紧要,但是在某些情况下确实可以。通过遵循此词法文件名顺序约定,您可以依赖init()函数的(固定)执行顺序。
init()