
数组是引见言语不合圭表类型元素的集结,可以放多个值,数组切可是具体圭表类型齐截,内存中延续存储
Go 言语中禁尽予同化不合圭表类型的引见言语元素,并且数组的数组切大年夜小 ,在定义阶段就断定了,具体不克不及变换
// 定义一个大年夜小为3的string圭表类型和int8圭表类型的数组,里面可以放3个字符串和3个数字var names [3]stringvar ages [3]int8fmt.Println(names,具体 ages) // 输进 :[ ] [0 0 0]
var ages [3]int8ages[0] = 18ages[2] = 22fmt.Println(ages)fmt.Println(ages[1])// 输进[18 0 22]0
// 编制一:var ages [3]int = [3]int{ 1,数组切 2, 3}fmt.Println(ages) // 输进:[1 2 3]// 编制二:var ages = [3]int{ 1, 2, 3}fmt.Println(ages) // 输进
:[1 2 3]// 编制三:...后背放几个值,数组大年夜小就是具体若干很多若干良多若干很多若干良多若干很多若干var ages = [...]int{ 1, 2, 3, 4, 5, 6, 7, 8}fmt.Println(ages) // 输进:[1 2 3 4 5 6 7 8]// 编制四:ages := [...]int{ 1, 2, 3, 4, 8}fmt.Println(ages) // 输进
:[1 2 3 4 8]var a [2]int = [2]int{ 1, 2}var b [2]int = [2]int{ 1, 3}b = a // 假定不是不合种圭表类型,禁尽予彼此赋值fmt.Println(b)因为数组是值圭表类型,Go 函数传参,都是 copy 传递,假定是值圭表类型 ,函数内改了,不会影响本来的
var a = [2]int{ 1, 2}fmt.Println(a) // [1 2]test(a) // [99 2]fmt.Println(a) // [1 2]func test(a [2]int) { a[0] = 99 fmt.Println(a)}var a = [2]int{ 1, 2} fmt.Println(len(a)) // 输进:2// 深化轮回var a = [...]int{ 7, 6, 5, 4, 3, 2, 1}for i := 0; i < len(a); i++ { fmt.Println(a[i])}// 经由过程 range 来轮回(range不是一个内置函数,是一个关头字如:for,if ,else)// 假定用一个变量领受,这个值是可迭代的索引// 假定用两个变量领受 ,这两个变量一个是索引,一个是具体的值var a = [...]int{ 7, 6, 5, 4, 3, 2, 1}for i, value := range a { fmt.Println(i) // 索引 fmt.Println(value) // 值}// 不要索引只需值轮回打印for _, value := range a { fmt.Println(value)}var a [3][3]int // 定义a[0][1] = 20 // 独霸fmt.Println(a) // 输进
:[[0 20 0] [0 0 0] [0 0 0]]// 定义并赋初始值var a [3][3]int = [3][3]int{ { 1}, { 2, 3, 4}, { 5, 6}}fmt.Println(a) // 输进:[[1 0 0] [2 3 4] [5 6 0]]// 轮回***数组var a [3][3]int = [3][3]int{ { 1}, { 2, 3, 4}, { 5, 6}}for _, value := range a { for _, inValue := range value { fmt.Println(inValue) }}// 在索引为5和7的职位指定初始化值var ages [10]int = [10]int{ 5: 55, 7: 77}fmt.Println(ages) // 输进
:[0 0 0 0 0 55 0 77 0 0]切片是由数构创建的一种筹划 、矫捷且下场壮除夜的包装(Wrapper) 。
它本身不具有任何数据 ,只对现罕有组的援引。
// 定义一个数组var a = [10]int{ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}// 基于数组,做一个切片b := a[:]fmt.Println(b) // 输进:[9 8 7 6 5 4 3 2 1 0]fmt.Printf("%T", b) // 输进 :[]int 中括号中不带对象,就是切片圭表类型fmt.Println(a) // 输进:[9 8 7 6 5 4 3 2 1 0]fmt.Printf("%T", a) // 输进 :[10]intvar a = [10]int{ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}b := a[:]fmt.Println(b[0]) // 输进:9fmt.Println(b[2]) // 输进:7var a = [10]int{ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}b := a[:]b[0] = 99 // 改削切片fmt.Println(b) // 输进 :[99 8 7 6 5 4 3 2 1 0]// 数组会被改削fmt.Println(a) // 输进:[99 8 7 6 5 4 3 2 1 0]var a = [10]int{ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}b := a[:]a[1] = 99 // 改削数组fmt.Println(a) // 输进
:[9 99 7 6 5 4 3 2 1 0]// 切片也会被改削fmt.Println(b) // 输进:[9 99 7 6 5 4 3 2 1 0]var a = [10]int{ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}b := a[3:6]// 改削切片b[0] = 66fmt.Println(b) // 输进 :[66 5 4]fmt.Println(a) // 输进:[9 8 7 66 5 4 3 2 1 0]// 改削数组a[4] = 55fmt.Println(b) // 输进:[66 55 4]fmt.Println(a) // 输进
:[9 8 7 66 55 4 3 2 1 0]var a = [10]int{ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}b := a[3:5]c := a[4:6]fmt.Println(a) // 输进:[9 8 7 6 5 4 3 2 1 0]fmt.Println(b) // 输进:[6 5]fmt.Println(c) // 输进
:[5 4]b[1] = 555fmt.Println(a) // 输进:[9 8 7 6 555 4 3 2 1 0]fmt.Println(b) // 输进:[6 555]fmt.Println(c) // 输进:[555 4]var a = [10]int{ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}b := a[3:7]fmt.Println(b) // 输进:[6 5 4 3]fmt.Println(a) // 输进
:[9 8 7 6 5 4 3 2 1 0]// 切片长度fmt.Println(len(b)) // 输进:4// 切片容量(我最多能存若干很多若干良多若干很多若干良多若干很多若干值
,从切片的肇端职位最早此后全数的,从索引为3最早)fmt.Println(cap(b)) // 输进:7var a = [10]int{ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}b := a[6:8]b = append(b,11)b = append(b,22)fmt.Println(a) // 输进:[9 8 7 6 5 4 3 2 11 22]// 追加莅临界点了在追加b = append(b,33)b = append(b,44)fmt.Println(a) // 输进:[9 8 7 6 5 4 3 2 11 22]fmt.Println(b) // 输进
:[3 2 11 22 33 44]// 数组长度不会在变了 ,他会在本来根本上翻倍 ,把我本来阿谁值copy到我新的数组上a和b已没有相干了b[0] = 33fmt.Println(b) // 输进:[33 2 11 22 33 44]fmt.Println(a) // 输进:[9 8 7 6 5 4 3 2 11 22]到此这篇关于具体引见Go言措辞语之数组与切片的文章就引见到这了,更多相干Go言语之数组与切片内容请搜刮完竣下载之前的文章或延续不雅不雅不雅不雅鉴赏上面的相干文章希看大年夜师往后多多支撑完竣下载!
本文由作文网综合栏目发布,感谢您对作文网的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“具体引见Go言语之数组与切片”
