1. close:主要用来关闭channel
2. len:用来求长度,比如string、array、slice、map、channel
3. new:用来分配内存,主要用来分配值类型,比如int、struct。返回的是指针
4. make:用来分配内存,主要用来分配引用类型,比如chan、map、slice
5. append:用来追加元素到数组、slice中
6. panic和recover:用来做错误处理
go get安装第三方包
数组
/*
数组
长度固定的数据类型,元素类型都是一样的。数组在内存中是连续的存储空间,可以有效的提高cpu的执行效率。
变量或者数组在定义时,如果没赋值,会设置默认值。
整形:0
string:""
bool:false
*/
func RunArray() {
//数组定义方式1
//var arrayValue1 [10]int
//fmt.Println(arrayValue1)
//
数组定义方式2,通过推算设置数组的长度
//arrayValue2 := [...]int{1, 2, 3, 4, 5}
//fmt.Println(arrayValue2)
//数组定义方式3, 第一百的位置参数是200,第300的位置参数是500,0开始所以共301长度
arrayValue3 := [...]int{100: 200, 300: 500}
fmt.Println(len(arrayValue3), arrayValue3)
}
/*
go语言中数组是值类型
下标0开始,长度由len()获取
*/
func runArray2() {
//直接调用,不会在其他函数内改变值。(除非使用指针类型)
//直接传值,是拷贝数组调用。
arrayV1 := [10]int{1, 2, 3, 4}
changeArray1(arrayV1)
fmt.Println(arrayV1)
changeArrayPointer(&arrayV1)
fmt.Println(arrayV1)
}
//这里会直接拷贝数组传入
func changeArray1(v1 [10]int) {
v1[1] = 100
v1[2] = 200
}
func changeArrayPointer(v1 *[10]int) {
v1[3] = 300
v1[4] = 400
}
/*
二维数组
*/
func runTwo() {
//1
var arrayTwo1 [4][2]int
fmt.Println(arrayTwo1)
//2
arrayTwo2 := [4][2]int{
{1, 2}, {2, 3}, {3, 4}, {4, 5}}
fmt.Println(arrayTwo2)
//3 通过指定位置参数
arrayTwo3 := [4][2]int{2: {1, 2}, 3: {2, 3}}
fmt.Println(arrayTwo3)
}