类型转换 与 C 不同的是,Go 在不同类型的项之间赋值时需要显式转换。 例如: var i int = 42 var f float64 = float64(i) 或 i := 42 f := float64(i)
在声明一个变量而不指定其类型时(即使用不带类型的 := 语法或 var = 表达式语法),变量的类型由右值推导得出。 例如: var i int j := i //j这样也会是int型
数组长度固定,所以GO语言中一般少用数组 slice(切片)一般多用,因为是动态增长的,功能也更灵活。
数组的长度是数组类型的一部分!
切片是对数组一个连续片段的引用,所以切片是一个引用类型! 切片本身不具有任何数据,只是对现有数组进行引用 每个切片值都会将其数组作为其底层的数据结构。
map是散列表的引用!(哈希表),拥有键值对元素的无序集合,键是唯一的,可获取、更新、删除 都是通过常量时间完成 所有可比类型都能作为key go语言的指针可以是bool值、string值、int、float 指针初始化但未赋值,其默认值为 函数传入的指针,也就是内存地址,在函数内部修改,也就是在内存地址上修改,修改结果会仍然保存(类似引用) 切片就是用了指针 go语言中不支持指针的运算
func test() {
//声明时没有指定数组内元素的值,默认为0
var arr [5]int
fmt.Println(arr)
arr[0] = 0
arr[1] = 1
arr[2] = 2
arr[3] = 3
arr[4] = 4
fmt.Println(arr)
}
func test1() {
//声明时即初始化
var arr1 = [5]int{0, 10, 20, 30, 40}
fmt.Println(arr1)
//短声明数组初始化
arr2 := [5]int{10, 11, 12, 13, 14}
fmt.Println(arr2)
//声明时部分初始化,其余未初始化为0
arr3 := [5]int{15, 20}
fmt.Println(arr3)
//通过指定索引对某几个元素赋值
arr4 := [5]int{1: 100, 2: 200}
fmt.Println(arr4)
//直接使用...让编译器计算数组长度
arr5 := [...]int{15, 20, 25, 30, 40}
fmt.Println(arr5)
fmt.Println("数组的长度是:", len(arr5))
}