代码
package main
import (
"fmt"
)
func main() {
// 创建数组
fmt.Println("***创建数组***")
// 方法一:
var arr1 [3]int = [3]int{1, 2, 3}
fmt.Println(arr1)
// 方法二:
var arr2 = [5]int{2, 4, 1, 8, 7}
fmt.Println(arr2)
// 方法三:
arr3 := [3]int{3, 2, 1}
fmt.Println(arr3)
// 方法四:
arr4 := [...]int{1, 6, 7, 8, 5}
fmt.Println(arr4)
// 遍历数组:
fmt.Println("***遍历数组***")
// 方法一:
for i := 0; i < len(arr4); i++ {
fmt.Printf("索引:%d,值:%d\n", i, arr4[i])
}
fmt.Println("-------------------------")
// 方法二:
for index, values := range arr4 {
fmt.Printf("索引:%d,值:%d\n", index, values)
}
// 创建二维数组
fmt.Println("***创建二维数组***")
var arr5 [3][3]int = [3][3]int{{1, 3, 5}, {2, 4, 6}, {8, 9, 10}}
fmt.Println(arr5)
// 遍历二维数组
fmt.Println("***遍历二维数组***")
// 方法一
for i := 0; i < len(arr5); i++ {
for j := 0; j < len(arr5[i]); j++ {
fmt.Print(arr5[i][j], "\t")
}
fmt.Println()
}
fmt.Println("-------------------------")
// 方法二
for index, value := range arr5 {
for i, v := range value {
fmt.Printf("arr5[%v][%v] = %v\t", index, i, v)
}
fmt.Println()
}
// 创建切片
fmt.Println("***创建切片***")
// 方法一:
slice1 := arr4[1:3]
fmt.Println(slice1)
// 方法二:make([],len,cup)
slice2 := make([]int, 5, 20)
slice2[1] = 99
slice2[4] = 100
fmt.Println(slice2)
// 方法三:
slice3 := []int{1, 3, 5, 7, 9}
fmt.Println(slice3)
// 切片遍历
fmt.Println("***遍历切片***")
// 方法一:
for i := 0; i < len(slice3); i++ {
fmt.Printf("key:%d,value:%d\n", i, slice3[i])
}
fmt.Println("-------------------------")
// 方法二:for + range
for k, v := range slice3 {
fmt.Printf("key:%d,value:%d\n", k, v)
}
// 切片知识扩充
fmt.Println("***切片知识扩充***")
/* 1、改变切片的值,原数组中的值也会相应改变。
原因:当通过一个数组创建一个切片后,数组中截取的第一个数的内存地址会指向整个切片,
相当于内存地址是一样的,所以原数组值也会改变
*/
fmt.Println("改变切片的值")
var intarr [5]int = [5]int{5, 4, 3, 2, 1}
fmt.Println("原数组:", intarr)
var intslice []int = intarr[1:3]
fmt.Println("切片:", intslice)
intslice[1] = 999
fmt.Printf("原数组:%v,切片:%v\n", intarr, intslice)
/* 2、append()函数增加切片的长度
注意:1、使用 append() 函数后,底层会创建一个新的切片,首先把旧的切片的内容复制到新的切片中,再添加新的内容,
所以使用 append() 函数后,需要重新赋值给一个变量
2、append() 函数还能添加切片内容,添加切片时,添加的切片后面要加 ...
*/
fmt.Println("append() 函数的使用")
s1 := intarr[:]
// 添加值
s2 := append(s1, 88, 66)
fmt.Println("添加值:", s2)
// 添加切片
s := []int{33, 44}
s3 := append(s1, s...) // s切片后面要加...
fmt.Println("添加切片:", s3)
/*3、copy()函数进行切片的拷贝
copy(b,a)把 a 中的内容复制到 b 中
*/
fmt.Println("copy() 函数的使用")
a := []int{5, 6, 7}
b := make([]int, 6)
copy(b, a)
fmt.Println("a复制到b中后:", b)
}
结果