Go中Slice的使用2

// 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)

    //內(nèi)建函數(shù)的使用
    //1)append函數(shù)向slice尾部添加數(shù)據(jù),返回新的slice對(duì)象
    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函數(shù)會(huì)智能地底層數(shù)組的容量增長(zhǎng),一旦超過(guò)原底層數(shù)組容量
    //通常以2倍容量重新分配底層數(shù)組,并復(fù)制原來(lái)的數(shù)據(jù)
    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
    //函數(shù)copy在兩個(gè)slice間賦值數(shù)據(jù)
    //賦值長(zhǎng)度以len小為準(zhǔn),兩個(gè)silce可指向同一底層數(shù)組
    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]

    //切片做函數(shù)參數(shù)
    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)
    }
    //備注:底層數(shù)組的值被改變了。
    fmt.Println("\n")
}

網(wǎng)站題目:Go中Slice的使用2
文章網(wǎng)址:http://muchs.cn/article12/ihicdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、定制開(kāi)發(fā)企業(yè)建站、網(wǎng)站改版、微信小程序網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)