golang知识精要(二)
程序员文章站
2022-04-21 16:39:38
类型 go是 静态类型 语言,不能在运行期改变变量类型。 变量定义 使用var定义变量,自动初始化为零值; 如果提供初始值,可省略变量类型; 函数内部可使用 := 定义变量。 多变量 可一次定义多个变量; 多变量赋值时, 先计算所有相关值,然后再从左到有依次赋值 。 const 常量值必须是编译期可 ......
类型
go是**静态类型**语言,不能在运行期改变变量类型。
变量定义
- 使用var定义变量,自动初始化为零值;
- 如果提供初始值,可省略变量类型;
- 函数内部可使用:=定义变量。
var x int // 自动初始化为0 var f float32 = 1.6 var s = "abc" func main(){ x := 123 }
多变量
- 可一次定义多个变量;
- 多变量赋值时,先计算所有相关值,然后再从左到有依次赋值。
var x, y, z int var s, n = "abc", 123 data, i := [3]int{0, 1, 2}, 0 i, data[i] = 2, 100 //(i=0) -> (i=2), (data[0]=100)
const
- 常量值必须是编译期可确定的数字、字符串、布尔值
const ( s = "abc" x // x = "abc" 常量组中,如不提供类型和初始值,那么与上一常量相同 b = len(a) c = unsafe.sizeof(b) // 可以使用len, cap, unsafe.sizeof等编译器可确定结果的函数返回值 )
枚举
const ( sunday = iota // 0 monday // 1 .. ) const ( _ = iota // iota =0 kb int64 = 1 << (10 * iota) // iota = 1 mb // 与kb表达式相同,但iota = 2 gb )
变量默认值
类型 | 默认值 | 长度 |
---|---|---|
bool | false | 1 |
byte | 0 | 1 |
rune | 0 | 4 |
int/uint | 0 | - |
float* | 0.0 | - |
string | "" | - |
slice / map / channel | nil | - |
interface/function | nil | - |
array / stuct | - | - |
类型转换
- 不支持隐式转换
var b byte = 100 var n int = (int)(b) // 显示转换,建议(type) a := 100 if a { // 不能使用其他类型当bool使用 println("true") }
指针
与c类似,略。
数组
var a [4]int = [4]int{1,2} //未初始化的元素将被赋为零值 var b = [...]string{"hello"} //长度为1 c := [...]int{99:-1} //定义了100个元素,最后一个初始化为-1
说明
- 如果数组的元素类型是可以互相比较的,那么数组类型也可以互相比较
- 当两个数组的所有元素相等,那么数组相等
表达式
range
[注意事项](https://studygolang.com/articles/12958)
switch
- 可省略break,默认自动终止。
x := []int{1, 2, 3} i := 2 switch i { case x[1]: println("a") // 自动终止 case .. } switch { // 可省略条件 case x > 0 : ... } switch i := 2; { // 带初始化语句 ... }
上一篇: 看看!什么叫成语高手的作文
下一篇: 爆逗的老爸老妈