// 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的使用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
机器学习实践指南
麦好 / 机械工业出版社 / 2014-4-1 / 69.00
《机器学习实践指南:案例应用解析》是机器学习及数据分析领域不可多得的一本著作,也是为数不多的既有大量实践应用案例又包含算法理论剖析的著作,作者针对机器学习算法既抽象复杂又涉及多门数学学科的特点,力求理论联系实际,始终以算法应用为主线,由浅入深以全新的角度诠释机器学习。 全书分为准备篇、基础篇、统计分析实战篇和机器学习实战篇。准备篇介绍了机器学习的发展及应用前景以及常用科学计算平台,主要包括统......一起来看看 《机器学习实践指南》 这本书的介绍吧!
HTML 编码/解码
HTML 编码/解码
RGB HSV 转换
RGB HSV 互转工具