重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
// 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),一旦超過原底層數(shù)組容量
//通常以2倍容量重新分配底層數(shù)組,并復(fù)制原來的數(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")
}
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。