Go编程基础——数组array

数组Array
1、定 义 数 组 的 格 式 : var<varName> [n]<<type> ,n>=0
2、数 组 长 度 也 是 类 型 的一部分, 因此 具 有 不 同 长 度 的数组为 为 不 同 类 型
3、注 意 区 分 指 向 数 组 的 指针和 指 针 数 组
4、数 组 在Go 中 为 值 类 型
5、数 组 之 间 可 以 使 用 = = 或 ! = 进 行 比 较 , 但 不 可 以 使 用 < 或 >
6、可 以 使 用 new 来 创 建数组 , 此 方 法 返 回 一 个 指 向 数 组 的 指 针
7、Go支 持 多 维 数 组

var a [1]int
var b [10]int

以上a,b数组为不同的数组类型,因为它们的长度不一样。同类型的数组才可以使用= = 或 ! = 进 行 比 较。
Go语言中数组比较便捷的地方,可以快速的给某一个位置的赋值如下

x:=[20]int{19:1}
fmt.Println(x)

结果如下

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1]

这就快速把第二十个值赋值,数组的起始下标是0.
Go语言的数组可以自动计算数组的个数,如下

x:=[...]int{1,2,3,4,5,6,7}

也可以结合上两种方式赋值,举例如下:

y:=[...]int{0:1,1:2,2:3}

下边分析一下指向数组的指针和指针数组

z:=[...]int{9:1}
var p *[10]int=&z
fmt.Println(z)
fmt.Println(p)

运行结果

[0 0 0 0 0 0 0 0 0 1]
&[0 0 0 0 0 0 0 0 0 1]

其中p就是指向数组的指针

x,y:=1,2
a:=[...]*int{&x,&y}
fmt.Println(a)

这里实际上保存的地址,运行结果如下

[0xc0420080a8 0xc0420080c0]

这里的a就是指针数组
还有一个是Go语言中的特殊地方,其他语言中为了节省内存,数组是引用类型,而在Go语言中数组是值类型,Go语言中引用类型的数组用切片(slice)来表示。

p:=new([10]int)
fmt.Println(p)

运行结果如下

&[0 0 0 0 0 0 0 0 0 0]

这就是使用new关键字创建一个数组返回的是一个指向数组的指针。

还有一点就是不管指向数组的指针还是数组本身都可以使用下标来操作某一个具体的元素如下;

b:=[10]int{}
b[2]=2
p:=new([10]int)
p[2]=2
fmt.Println(b)
fmt.Println(p)

运行结果

[0 0 2 0 0 0 0 0 0 0]
&[0 0 2 0 0 0 0 0 0 0]

多维数组

a:=[2][3]int{
   {1,2,3},
   {4,5,6},
}
fmt.Println(a)

//或

a:=[2][3]int{
{1,2,3},
{4,5,6}}
fmt.Println(a)

对前边中括号中的2和3的解释就是数组中有2个元素,每个元素就是长度为3的int数组。

以下:Go 语 言 版 冒 泡 排 序–从大到小排序

b:=[...]int{3,1,6,99,9}
fmt.Println(b)
num:=len(b)
for i:=0;i<num ;i++  {
   for j:=i+1;j<num ;j++  {
      if b[i]<b[j]{
         temp:=b[i]
         b[i]=b[j]
         b[j]=temp
      }

   }
}
fmt.Println(b)

运行结果

[3 1 6 99 9]
[99 9 6 3 1]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值