Golang数组以及切片

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)
}
发布了97 篇原创文章 · 获赞 12 · 访问量 5372

猜你喜欢

转载自blog.csdn.net/qq_43141726/article/details/104341706