有效GO- GO编程语言(Google.cn)
初始化|“有效的行程2020” |GO技术论坛(sharchku.com)
尽管从表面上看,GO的初始化过程与C或C ++没有太大的不同,但它确实更强大。在初始化过程中,它不仅可以构建一个复杂的结构,而且可以正确处理之间的初始化顺序不同的软件包对象。
GO中的常数是不变的。它们是在编译过程中创建的,即使它们可能是函数中定义的局部变量。常数只能是数字,字符(符文),字符串或布尔值。定义其表达式也必须是编译器可以使用的恒定表达式。例如,1 << 3是一个恒定的表达式,而Math.sin.sin(Math.pi/4)不是,因为Math.sin的函数调用仅在运行时发生。
在GO中,枚举通常使用枚举iota。由于IOTA可以成为表达式的一部分,因此表达式可以在隐藏中重复,这更容易构建复杂的值集合。
用户定义的类型可以重写字符串方法,因此即使作为一般类型的一部分,它也提供了自动格式化的任何值的可能性。尽管您经常看到该技术应用于结构,但它也对浮动 - 点等级,例如Bytesize。
表达式YB打印了1.00YB,并打印(1E13)打印9.09。
使用sprintf实现Bytesize的字符串方法是安全的(这不会是递归)。这不是因为类型转换,而是由%f称为sprintf。仅在字符串时调用字符串方法,并且%f需要浮点值。
变量可以初始化为常数,并可以将其初始化为一个通用表达式,该表达式可以在运行时获得结果。
最后,每个源文件可以通过定义自己的参数init函数来设置一些必要的状态。(实际上,每个文件都可以具有多个初始化函数。)并且其结束意味着初始化已经结束:只有包装中的所有变量称为变量变量只有在所有进口袋初始化之后。
除了无法以语句表示的初始化外,init()函数将在每个软件包初始化后自动执行,并且优先级高于主函数。通常使用INIT函数: