go 数组切片

Posted yangxinpython

tags:

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

package main

import "fmt"

//切片
//切片下来的b从新赋值,那么a随之改变

func xxx()  {

    //定义切片以直接由数组切出来
    //var a [8]int = [8]int{1,2,3,4,5,67}
    //var  b[]int  = a[2:5]
    //定义切片2,c该c是是一个nil,就是空只有
    //var c []int
    //b[2]=200
    //fmt.Println(b)
    //fmt.Println(a)
    //fmt.Println(c)

    //定义并初始化,第一个数字是切片的长度,第二个是数字底层数组长度,也就是切片的容量,数组容量的从切片的起始位置算起
    //var b []int=make([]int,3,4)
    //fmt.Println(b)
    ////查看切片的长度
    //fmt.Println(len(b))
    ////查看数组的长度
    //fmt.Println(cap(b))

    //切片的数据结构表示,了解
    //type slice struct {
    //    Length        int//切片的长度
    //    Capacity      int//切片的容量
    //    ZerothElement *byte//数组的地址
    //}


    //切片函数传递,传参必须接受固定的格式
    //var a  = make([]int,3,4)//切片长度为3,数组容量为4
    //text(a)


    //copy,将b的值copy到a中,切b有值的索引不得大于a,若b的索引是5有值那么a直接会报错,因为长度不够
    //var a = make([]int,4,4)
    //var b =make([]int,3,10000)
    //b[1]=99
    //b[2]=888
    //copy(a,b)
    //fmt.Println(a)


    //切片追加值
    //内置函数append
    //var a [8]int=[8]int{1,2,3,4,5,6,7,8}
    //var b []int=a[2:3]
    //fmt.Println(cap(b))
    //b = append(b,1,2,3,4,5,111,111,11)
    //fmt.Println(b)
    //fmt.Println(len(b))
    //fmt.Println(cap(b))
    //fmt.Println(a)
    //在append增加中的你的切出赖的b长度不够大,但是你增加的值却多那么就会将你a的后边的值改变,
    //若你增加的长度超过a那么就不会改变你的a的值,且你的长度会在原来a的基础上增加一倍



    //多维切片
    //生成一个数组套三个数组
    //var a[][]string = make([][]string,3,5)
    //fmt.Println(a)
    //a[0] = make([]string,2,3)
    //fmt.Println(a)

    //多维切片初始化
    //生成一个数组,套两个列表,值为大括号中的,数组中的个数随着初始化的值增加
    var a[][]string = [][]string{{"1","2"},{"3","4"}}
    fmt.Println(a)

}
func text(c []int)  {
    fmt.Println(c)
}





func main() {
    xxx()
}

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

Go切片实现

你知道的Go切片扩容机制可能是错的

从零开始学Go之容器:切片

《Go题库·1》Golang里的数组和切片有了解过吗?

Go语言数据结构切片

go语言数组与切片比较