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