QQ登录

只需一步,快速开始

扫一扫,访问微社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 290|回复: 2

[技术分享] Go之旅-数组

[复制链接]

8

主题

11

帖子

1086

Z币

中级会员

Rank: 3Rank: 3

积分
1097
发表于 2018-9-19 17:29:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 frankphper 于 2018-9-19 17:31 编辑
  1. package main

  2. import (
  3.         "fmt"
  4. )

  5. // 声明数组
  6. // var array [5]int

  7. func main() {
  8.         // 声明一个包含5个元素的整型数组
  9.         // array := [5]int{1, 2, 3, 4, 5}
  10.         // 声明一个整型数组,用具体值初始化每个元素,容量由初始化值的数量决定
  11.         // array := [...]int{1, 2, 3}
  12.         // 声明数组并指定特定元素的值
  13.         // array := [5]int{1: 10, 2: 20}
  14.         // 修改索引为2的元素的值
  15.         // array[2] = 30
  16.         // 声明包含5个元素的指向整数的数组,用整型指针初始化索引为0和1的数组元素
  17.         // array := [5]*int{0: new(int), 1: new(int)}
  18.         // 为索引为0和1的元素赋值
  19.         // *array[0] = 1
  20.         // *array[1] = 2
  21.         // fmt.Println(*array[1])
  22.         // fmt.Println(array[0])
  23. }
复制代码

  1. package main

  2. import (
  3.         "fmt"
  4. )

  5. // 声明第一个包含5个元素的整型数组
  6. var array1 [5]int

  7. func main() {
  8.         // 声明第二个包含5个元素的整型数组
  9.         array2 := [5]int{1, 2, 3, 4, 5}
  10.         // 把array2的值赋值给array1,只有这两个数组长度和每个元素的类型都相同,才可以互相赋值
  11.         array1 = array2
  12.         fmt.Println(array1[0])
  13. }
复制代码

  1. package main

  2. import (
  3.         "fmt"
  4. )

  5. // 声明第一个包含3个元素的指向整型的指针数组
  6. var array1 [3]*int

  7. func main() {
  8.         // 声明第二个包含3个元素的指向整型的指针数组
  9.         // 使用字符串指针初始化这个数组
  10.         array2 := [3]*int{new(int), new(int), new(int)}
  11.         // 为每个元素赋值
  12.         *array2[0] = 1
  13.         *array2[1] = 2
  14.         *array2[2] = 3
  15.         // 将array2复制给array1
  16.         array1 = array2
  17.         // 复制之后,两个数组指向同一组整型,因为复制数组指针,只会复制指针的值,不会复制指针所指向的值
  18. }
复制代码

  1. package main

  2. import (
  3.         "fmt"
  4. )

  5. // 声明一个二维整型数组,两个维度分别存储4个元素和2个元素
  6. // var array [4][2]int

  7. func main() {
  8.         // 使用数组字面量来声明并初始化一个二维整型数组
  9.         // array := [4][2]int{{10, 11}, {20, 21}, {30, 31}, {40, 41}}
  10.         // 声明并初始化外层数组中索引为1和3的元素
  11.         // array := [4][2]int{1: {20, 21}, 3: {40, 41}}
  12.         // 声明并初始化外层数组和内层数组的单个元素
  13.         array := [4][2]int{1: {0: 20}, 3: {1: 41}}
  14. }
复制代码

  1. package main

  2. import (
  3.         "fmt"
  4. )

  5. // 声明一个2x2的二维整型数组
  6. var array [2][2]int

  7. func main() {
  8.         // 设置每个元素的整型值
  9.         array[0][0] = 10
  10.         array[0][1] = 20
  11.         array[1][0] = 30
  12.         array[1][1] = 40
  13.         // 访问单个元素
  14.         fmt.Println(array[1][0])
  15. }
复制代码

  1. package main

  2. import (
  3.         "fmt"
  4. )

  5. // 声明两个不同的二维整型数组
  6. var array1 [2][2]int
  7. var array2 [2][2]int

  8. func main() {
  9.         // 为每个元素赋值
  10.         array2[0][0] = 10
  11.         array2[0][1] = 20
  12.         array2[1][0] = 30
  13.         array2[1][1] = 40
  14.         // 将array2的值复制给array1
  15.         array1 = array2
  16.         // 因为每个数组都是一个值,所以可以独立复制某个维度
  17.         // 将array1的索引为1的维度复制到一个同类型的新数组里
  18.         var array3 [2]int = array1[1]
  19.         fmt.Println(array3)
  20.         // 将外层数组的索引为1、内层数组的索引为0的整型值复制到新的整型变量里
  21.         var value int = array1[1][0]
  22.         fmt.Println(value)
  23. }
复制代码


644

主题

804

帖子

9872

Z币

管理员

Rank: 9Rank: 9Rank: 9

积分
10950
发表于 2018-9-20 11:29:00 | 显示全部楼层
在函数间传递数组,最好使用指针传递。因为数组比较占用内存,尤其是大数组

228

主题

245

帖子

580

Z币

管理员

Rank: 9Rank: 9Rank: 9

积分
870
发表于 2018-9-27 18:02:01 | 显示全部楼层
Go开发中,很少使用数组
*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

     
    战略合作|联系方式|广告赞助|商务合作|Archiver|手机版|小黑屋|( 京ICP备14036609号-6 )

GMT+8, 2018-12-19 11:17

© 2013-2018 Powered by Discuz! X3.3. 本站由 又拍云 提供 CDN 图片存储服务

快速回复 返回顶部 返回列表