go语言切片

go语言切片

package main

import "fmt"

func main() {
    //切片定义的第一种方式,由数组切出来
    //var a [8]int=[8]int{1,2,3,4,5,6,7,8}
    ////只是对数组的引用
    //var b []int=a[2:6]
    //fmt.Println(b)
    //a[2]=30
    //fmt.Println(b)
    //b[1]=40
    //fmt.Println(b)
    //fmt.Println(a)
    ////底层数组的修改会影响切片
    ////切片的修改也会影响底层数组
    //a[1]=20
    //fmt.Println(b)
    //更多用法,没有步长
    //var a [8]int=[8]int{1,2,3,4,5,6,7,8}
    //b:=a[:4]
    //fmt.Println(b)
    //第二种方式,直接定义
    //切片空值是?nil类型
    //var a []int
    //if a==nil{
    //    fmt.Println("我是空的")
    //}
    //a[0]=10
    //fmt.Println(a)
    //定义并初始化,第一个数字是切片的长度,第二个数字是底层数组长度,也就是切片的容量
    //var a []int=make([]int,3)
    //fmt.Println(a)
    //切片的长度和容量(len     cap:容量)
    //var a [8]int=[8]int{1,2,3,4,5,6,7,8}
    //var b []int=a[2:6]
    //fmt.Println(len(b))
    //fmt.Println(cap(b))
    //var a []int=make([]int,3,4)
    //fmt.Println(a)
    //fmt.Println(len(a))
    //fmt.Println(cap(a))

    //切片追加值
    //var a [8]int=[8]int{1,2,3,4,5,6,7,8}
    //var b []int=a[2:6]
    //fmt.Println(len(b))
    //fmt.Println(cap(b))
    ////内置函数append
    //b=append(b,555)
    //b=append(b,666)
    //fmt.Println(b)
    //fmt.Println(len(b))
    //fmt.Println(cap(b))
    //b[0]=999
    //fmt.Println(a)
    //b=append(b,777)
    //fmt.Println(b)
    //fmt.Println(len(b))
    //fmt.Println(cap(b))
    //b[0]=999
    //fmt.Println(b)
    //fmt.Println(a)
    //var b =make([]int,3,4)
    //fmt.Println(b)
    //b=append(b,4)
    //fmt.Println(b)
    //fmt.Println(len(b))
    //fmt.Println(cap(b))
    //b=append(b,5)
    //fmt.Println(len(b))
    //fmt.Println(cap(b))
    //切片的修改
    //var b =make([]int,3,4)
    //b[0]=999
    //fmt.Println(b)
    //var b =make([]int,4,4)
    //fmt.Println(len(b))
    //fmt.Println(cap(b))
    //切片的函数传递
    //var b =make([]int,3,4)
    //test(b)
    //fmt.Println(b)
    //切片的数据结构表示
    //type slice struct {
    //    Length        int
    //    Capacity      int
    //    ZerothElement *byte
    //}
    //多维切片
    //var a [][]string=make([][]string,2,3)
    //fmt.Println(a[0])
    //a[0]=make([]string,2,3)
    //if a[0]==nil{
    //    fmt.Println("xxxx")
    //}
    //切片初始化的方法
    //var a []int=[]int{1,2,3}
    //fmt.Println(a)
    //fmt.Println(len(a))
    //fmt.Println(cap(a))
    //多维切片初始化
    //var a [][]string=[][]string{{"1","2"},{"3","4"}}
    //fmt.Println(a)
    //fmt.Println(len(a))
    //fmt.Println(cap(a))
    //a[0][1]="999"
    //fmt.Println(a)
    //a[1][0]="999"
    //var a []int=[]int{1,2}
    //fmt.Println(a)
    //a=append(a,3)
    //fmt.Println(len(a))
    //fmt.Println(cap(a))
    //a[2]=99
    //a[3]=888
    //fmt.Println(a)
    //copy函数
    var a =make([]int,3,10000)
    a[1]=99
    a[2]=888
    fmt.Println(a)

    //var b =make([]int,4,4)
    var b =make([]int,2,4)
    fmt.Println(b)
    copy(b,a)
    fmt.Println(b)




}

func test(b []int)  {
    b[0]=999
    fmt.Println(b)
}
posted @ 2019-12-11 18:46  Nmdlao  阅读(182)  评论(0编辑  收藏  举报