我国铁路掌控制订高铁局限13项琐细级国际标准

焦点 819℃

1、具体数组

数组是引见言语不合圭表类型元素的集结,可以放多个值,数组切可是具体圭表类型齐截 ,内存中延续存储

Go 言语中禁尽予同化不合圭表类型的引见言语元素,并且数组的数组切大年夜小 ,在定义阶段就断定了,具体不克不及变换

1 、引见言语数组的数组切定义

// 定义一个大年夜小为3的string圭表类型和int8圭表类型的数组	,里面可以放3个字符串和3个数字var names [3]stringvar ages [3]int8fmt.Println(names,具体 ages) // 输进
:[  ] [0 0 0]

2 、数组赋值

var ages [3]int8ages[0] = 18ages[2] = 22fmt.Println(ages)fmt.Println(ages[1])// 输进[18 0 22]0

3 、引见言语定义并初始化

// 编制一: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]

4 、数组的引见言语大年夜小是圭表类型的一部分

var a [2]int = [2]int{ 1, 2}var b [2]int = [2]int{ 1, 3}b = a  // 假定不是不合种圭表类型
,禁尽予彼此赋值fmt.Println(b)

5、数组切数组是值圭表类型

因为数组是值圭表类型,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)}

6、数组长度 len() 数组长度在定义阶段已结实

var a = [2]int{ 1, 2} fmt.Println(len(a))  // 输进:2

7、数组轮回

// 深化轮回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)}

8 、***数组

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

9 、数组定义并指定职位初始化

// 在索引为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]

2 、切片根本

切片是由数构创建的一种筹划 、矫捷且下场壮除夜的包装(Wrapper) 。

它本身不具有任何数据,只对现罕有组的援引 。

1、切片的定义

// 定义一个数组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]int

2、独霸切片

var a = [10]int{ 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}b := a[:]fmt.Println(b[0]) // 输进:9fmt.Println(b[2]) // 输进:7

3、改削切片 ,会影响数组

var 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]

4 、改削数组也会影响切片

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]

5  、切片只切数组的一部分

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]

6 、当多个切片共用不异的底层数组时,每个切片所做的变换将回响在数组中

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]

7 、切片的长度和容量

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))    // 输进
:7

8 、切片追加值

var 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言语之数组与切片内容请搜刮完竣下载之前的文章或延续不雅不雅不雅不雅鉴赏上面的相干文章希看大年夜师往后多多支撑完竣下载 !