在Go规范的package initialization部分," lexical文件名顺序"意思?
为了确保可重现的初始化行为,构建系统是 鼓励提供属于同一个包的多个文件 词汇文件名顺序到编译器。
答案 0 :(得分:7)
来自Wikipedia:
词汇顺序是对单词的字母顺序基于其组成字母的字母顺序的方式的概括。
实际上,这意味着文件名将作为字符串进行比较,使用字符代码来确定顺序。英文字母的字符代码顺序遵循字母的自然顺序,但如果非字母也是文件名的一部分(例如数字和其他字符,如init()
),则字符代码顺序很重要。
这只是一个定义源文件(任意)顺序的约定,如果包中包含多个源文件,如果重新编译包(当然文件未重命名),则该顺序保持不变。
目的是使源文件始终以相同的顺序处理,因此包init()
函数也将以相同的顺序执行,您将观察到相同的行为。包init()
函数的顺序通常无关紧要,但可能会出现这种情况。通过遵循此词法文件名顺序约定,您可以依赖<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/onboardingimg1">
<View
android:id="@+id/opacityFilter"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
android:layout_alignParentBottom="true"
android:alpha="0.7">
</View>
</RelativeLayout>
函数的(固定)执行顺序。