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)
//内建函数的使用
//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")
}
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
为玛曲等地区用户提供了全套网页设计制作服务,及玛曲网站建设行业解决方案。主营业务为成都网站建设、成都网站设计、玛曲网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!名称栏目:Go中Slice的使用2-创新互联
本文网址:http://pwwzsj.com/article/pigps.html