Golang 数组和切片

数组和slice切片切片又称动态数组

顾名思义,定义切片对数组存储元素的个数不做要求,而普通数组在定义时必须给明个数。

数组

声明和赋值

package main

import "fmt"

func main() {
    var array1 [3]int = [3]int{1,2,3}

    fmt.Println(array1)
}

先声明后赋值

package main

import "fmt"

func main() {
    var array2 [3]int

    for index,_ := range array2 {
        array2[index] = index + 1
    }

    fmt.Println(array2)
}

短声明

package main

import "fmt"

func main() {

    array3 := [3]int{1,2,3}

    fmt.Println(array3)
}

个数推导

package main

import "fmt"

func main() {

    array4 := [...]int{1,2,3}

    fmt.Println(array4)
}
slice

slice切片

方式一
package main

import "fmt"

func main() {
    var array1 []int = []int{}

    array1 = append(array1,1)

    fmt.Println(array1)
}

方式二 make
package main

import "fmt"

func main() {
    
    array2 := make([]int, 0)
        
        
    array2 = append(array2,1)

    fmt.Println(array2)
}

以上,需要指出的是:

appendarray[0] = 1
// good
array2 = append(array2,1)

// bad
array2[0] = 1

range函数

rangefor功能类似
package main

import "fmt"

func main() {
    
    array := [...]int {1,2,3}

    for index,item := range array {
        fmt.Println(index,item)
    }
    
}

rangeindex
array := [...]int {1,2,3}
        
    for _,item := range array {
        fmt.Println(item)
    }
_