golang数组与切片

Posted xbblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang数组与切片相关的知识,希望对你有一定的参考价值。

golang中坑的慢慢踩!

我们都知道golang中的切片是引用类型,但是在函数中使用append给切片追加元素是行不通的,需要使用切片的指针类型才能增加元素

数组的使用:

package main

import (
    "fmt"
)

func ChangeArr(arr [5]int) {
    arr[0] = 6
}

func ChangeArr2(arr *[5]int) {
    arr[0] = 6
}

func main() {
    a := [5]int{1, 2, 3, 4, 5}
    PrintArr(a)
    ChangeArr(a)
    PrintArr(a)
    ChangeArr2(&a)
    PrintArr(a)
}

func PrintArr(arr [5]int) {

    fmt.Println("
打印数组:")
    for _, v := range arr {
        fmt.Print(v, ",")
    }
}

运行结果:

技术分享图片

 

切片的使用:

package main

import (
    "fmt"
)

func ChangeArr(arr []int) {
    arr[1] = 20
    arr = append(arr, 8) //此处的元素并没有增加到切片
}

func ChangeArr2(arr *[]int) {
    (*arr)[0] = 6          //因为传入的是切片指针,所以所有使用切片的地方都必须是指针类型的切片(这里与数组不同)
    *arr = append(*arr, 7) //此处的元素添加进了切片
}

func main() {
    a := []int{1, 2, 3, 4, 5}
    PrintArr(a)
    ChangeArr(a)
    PrintArr(a)
    ChangeArr2(&a)
    PrintArr(a)
}

func PrintArr(arr []int) {

    fmt.Println("
打印切片:")
    for _, v := range arr {
        fmt.Print(v, ",")
    }
}

运行结果:

技术分享图片

 

以上是关于golang数组与切片的主要内容,如果未能解决你的问题,请参考以下文章

golang数组与切片

golang中数组与切片的区别

golang中不定参数与数组切片的区别

Golang中数组和切片的区别与联系

Golang切片与函数参数“陷阱”

Golang 函数传参使用切片而不使用数组为什么?