Golang
1 数组
如何创建数组:
package main
import "fmt"
func main(){
var num1 [3]int = [3]int {1,2,3}
var num2 = [3]int {1,2,3}
var num3 = [...]int {4,4,6,1,2}
var num4 = [3]string{0:"tom",1:"jerry",2:"king"}
var num5 = [3]int {1:2,2:3,0:4}
fmt.Println(num1,num2,num3,num4)
fmt.Println(num5)
}
4种方法
滴4种方法可以指定元素的位置index
2 切片
切片是引用数据类型,故可以通过修改切片的元素进而修改数组的元素
如何创建切片:
1.通过数组来创建切片。
2.通过make的方法创建切片
3.通过制定其具体的数组创建切片
package main
import "fmt"
func main(){
//切片的使用:
//1.通过数组切片
//2.直接make创造切片,是由切片在底层维护,程序员不可见,
var slice []int = make([]int ,4 ,10)//第一个参数为切片的类型,第二个参数为切片的长度,第三个参数为切片的容量
//默认为0
fmt.Println(slice)
slice[0] = 1
fmt.Println(slice)
//3.定义一个切片,就直接指定其具体的数组,使用原理类似于make
var Stringslice []string = []string{"tom","hello","wolrd"}
fmt.Println(Stringslice)
fmt.Println(cap(Stringslice))
}
通过cap的方法去查看切片的容量,一般来说切片的容量是其长度的两倍
make的方法也是通过定义切片的容量以及长度定义的。
遍历切片
方法1是传统的遍历方法,方法2是通过for-range的方法遍历
func main(){
//遍历切片:
var num []int = make([]int,4,8)
num[1] = 10
num[2] = 20
num[3] = 10
for i:=0;i < len(num);i++{
fmt.Println(num[i])
}
fmt.Println()
for _,v := range num{
fmt.Println(v)
}
}
通过append追加元素到切片中
append(slice,slice1…)表示将slice1追加到slice后面
func main(){
var n [5]int = [...]int {1,2,3,4,5}
slice := n[:]//全部的
fmt.Println(slice)
fmt.Println(cap(n))
slice1 := append(slice,100)
fmt.Println(slice1)
slice1 = append(slice1,slice1...)
fmt.Println(slice1)
}
结果为
[1 2 3 4 5]
5
[1 2 3 4 5 100]
[1 2 3 4 5 100 1 2 3 4 5 100]
切片的拷贝
需要注意的是只有两个都是切片才可以拷贝,不可以有数组。数组不可拷贝
package main
import "fmt"
func main(){
var a []int = []int {1,2,3,4,5}
var slice = make([]int,10)
fmt.Println(slice)
copy(slice,a)
fmt.Println(slice)
}