Go中Slice的使用

栏目: Go · 发布时间: 6年前

// code_013_slice_usage project main.go
package main

import (
    "fmt"
)

func test(s []int) {
    s[0] = -1
    fmt.Println("test:")
    for i, v := range s {
        fmt.Printf("s[%d]=%d\n", i, v)
    }
    fmt.Println("\n")
}

func main() {
    //  var s1 []int
    //  s2 := []int

    //  var s3 []int = make([]int ,0)
    //  s4 :=make([]int, 0, 0)
    s := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    s1 := s[2:5]
    fmt.Println(s1)

    s2 := s1[2:6]
    s2[3] = 200
    fmt.Println(s2)
    fmt.Println(s)

    //内建函数的使用
    //1)append函数向slice尾部添加数据,返回新的slice对象
    var ss []int
    ss = append(ss, 1)
    ss = append(ss, 2, 3)
    ss = append(ss, 4, 5, 6)
    fmt.Println(ss)

    ss2 := make([]int, 5)
    ss2 = append(ss2, 6)
    fmt.Println(ss2)

    ss3 := []int{1, 2, 3}
    ss3 = append(ss3, 4, 5)
    fmt.Println(ss3)

    //append函数会智能地底层数组的容量增长,一旦超过原底层数组容量
    //通常以2倍容量重新分配底层数组,并复制原来的数据
    sss := make([]int, 0, 1)
    c := cap(sss)
    for i := 0; i < 50; i++ {
        sss = append(sss, i)
        if n := cap(sss); n > c {
            fmt.Printf("cap:%d -> %d\n", c, n)
            c = n
        }
    }

    //copy
    //函数copy在两个slice间赋值数据
    //赋值长度以len小为准,两个silce可指向同一底层数组
    data := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    v1 := data[8:] //{8, 9}
    v2 := data[:5] //{0, 1, 2, 3, 4}
    copy(v2, v1)   // dst:s2, src:s1

    fmt.Println(v2)   //[8 9 2 3 4]
    fmt.Println(data) //[8 9 2 3 4 5 6 7 8 9]

    //切片做函数参数
    slice := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    test(slice)

    fmt.Println("main:")
    for i, v := range slice {
        fmt.Printf("slice[%d]=%d\n", i, v)
    }
    //备注:底层数组的值被改变了。
    fmt.Println("\n")
}

以上所述就是小编给大家介绍的《Go中Slice的使用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

A Byte of Python

A Byte of Python

Swaroop C H / Lulu Marketplace / 2008-10-1 / USD 27.98

'A Byte of Python' is a book on programming using the Python language. It serves as a tutorial or guide to the Python language for a beginner audience. If all you know about computers is how to save t......一起来看看 《A Byte of Python》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换