9169c15b184555518e7588461783ce56
go实战-数组和切片套路学习

我们这次主要讨论 Go 语言的数组(array)类型和切片类型,不过他们的不同是:数组类型的值(以下简称数组)的长度是固定的,而切片类型的值(以下简称切片)是可变长的,而go的切片很类似python的的切片

数组

1、数组:是同一种数据类型的固定长度的序列。2、数组定义:var a [len]int,比如:var a[5]int,一旦定义,长度不能变3、访问越界,如果下标在数组合法范围之外,则触发访问越界,会panic。4、数组是值类型,因此改变副本的值,不会改变本身的值。

数组初始化:
var age0 [5]int = [5]int{1,2,3} 
var age1 = [5]int{1,2,3,4,5}
var age2 = […]int{1,2,3,4,5,6}
var str = [5]string{3:"hello world", 4:"tom"}
var age [5][3]int //多纬数组
var f [2][3]int = [...][3]int{{1, 2, 3}, {7, 8, 9}} //多纬数组
多维数组遍历
package main
import (
    "fmt"
)
func main() {
    var f [2][3]int = [...][3]int{{1, 2, 3}, {7, 8, 9}}
    for k1, v1 := range f {
        for k2, v2 := range v1 {
            fmt.Printf("(%d,%d)=%d ", k1, k2, v2)
        }
        fmt.Println()
    }
}

可以运行下代码进行理解。

切片

切片是数组的一个引用,因此切片是引用类型,切片的长度可以改变,因此,切片是一个可变的数组,.切片的定义:var 变量名 []类型,比如 var str []string var arr []int
1.通过make来创建切片

var slice []type = make([]type, len)
slice := make([]type, len)
slice := make([]type, len, cap)
top Created with Sketch.