GO起步-数组

简介: 主要记录下go的数组定义、数组切片等go数组相关的知识

数组

主要定义方式为:数组名称 [n]  T (类型)表示拥有N个T类型的数组如:

var a [10]int 
#将变量a声明为拥有10个整数的数组,数组是不可变的,定义后其大小不能改变。
fmt.Println(a)
#打印: [0 0 0 0 0 0 0 0 0 0]
var b[5]int={1,2,3,4,5}
fmt.Println(b)

数组初始化:

# 方法一:
var a=[5]int{1,2,3,4,5}
# 方法二:通过自变量在声明数组的同时快速初始化数组
b:= [5]int{2,3,4,5,6}
数组长度不确定可以用...代替数组的长度,编译器会根据元素个数自动推断数组的长度:
var a =[...]int{2,3,4,5,6}
b:=[...]float32{1.0,2,3.5}
#另外一种定义方式:将索引为1和7的元素初始化,
这里用用...代替数组的长度,编译器自动推断数组长度
d:=[...]int{1:5,7:6}

多维数组

var c[3][5] int 
for i:=0;i<3;i++{
   for j:=0;j<5;j++{
      c[i][j]=i*j
   }
}


数组的访问

a:=[5]int{1,2,3,4,5}
for i:=0;i<5;i++{
  fmt.println(i)
}

数组的切片操作

a:=[...]int{1,3,4,6,7}
b:=a[1:3]
fmt.Println(b) #  a[1]和a[2]
# 结果打印[3 4]  
c:=a[:4] #a[0]到a[3]不包括a[4]
fmt.Println(c)
结果打印:[1,3,4,6]
d:=a[2:] 从a[2]到a[4] 
fmt.Println(d)
结果打印 [4,6,7]

数组切片是共享内存的,这里不会存在数据复制,实际上切片赋予的变量只是记录了从哪里切到哪里


补充

短变量声明::= 可在类型明确的地方代替var声明。

比如x:=10 等价于var x int=10



参考信息:

https://coolshell.cn/articles/8460.html#%E6%95%B0%E7%BB%84

https://www.runoob.com/go/go-arrays.html

http://tour.studygolang.com/basics/10

目录
相关文章
|
4月前
|
Go 索引
Go 语言中同一 slice 上的切片其底层数组是否是同一个
Go 语言中同一 slice 上的切片其底层数组是否是同一个
42 0
|
4月前
|
安全 Go
这一次,带你深入浅出Go语言切片和数组
这一次,带你深入浅出Go语言切片和数组
49 0
|
3月前
|
Go
go语言数组与切片
go语言数组与切片
|
1月前
|
存储 编译器 Go
|
21天前
|
存储 Go 数据处理
C 数组和 Go 切片的区别详解
【8月更文挑战第31天】
28 0
|
24天前
|
人工智能 编译器 Go
Go从入门到放弃之数组、切片
Go从入门到放弃之数组、切片
|
1月前
|
算法 安全 Go
|
1月前
|
监控 Serverless Go
Golang 开发函数计算问题之Go 语言中切片扩容时需要拷贝原数组中的数据如何解决
Golang 开发函数计算问题之Go 语言中切片扩容时需要拷贝原数组中的数据如何解决
|
1月前
|
存储 Go 开发者
在Go中对切片/数组求和的多种方法
在Go中对切片/数组求和的多种方法
|
4月前
|
编译器 Go 索引
Go 语言数组
Go 语言数组
20 1