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

目录
相关文章
|
6月前
|
Go 索引
Go 语言中同一 slice 上的切片其底层数组是否是同一个
Go 语言中同一 slice 上的切片其底层数组是否是同一个
53 0
|
1月前
|
存储 前端开发 Go
Go语言中的数组
在 Go 语言中,数组是一种固定长度的、相同类型元素的序列。数组声明时长度已确定,不可改变,支持多种初始化方式,如使用 `var` 关键字、短变量声明、省略号 `...` 推断长度等。数组内存布局连续,可通过索引高效访问。遍历数组常用 `for` 循环和 `range` 关键字。
|
23天前
|
Java Go 数据处理
go语言使用切片而非数组
【10月更文挑战第18天】
11 1
|
5月前
|
Go
go语言数组与切片
go语言数组与切片
|
2月前
|
编译器 Go 索引
Go to Learn Go之数组
Go to Learn Go之数组
28 0
|
2月前
|
编译器 Go 索引
Go数组、多维数组和切片(动态数组),及常用函数len(),cap(),copy(),append()在切片中的使用
本文介绍了Go语言中数组、多维数组和切片(动态数组)的基本概念和操作,包括数组的定义、初始化、访问,多维数组的定义和访问,以及切片的创建、使用和扩容。同时,还讲解了切片中常用的函数len()、cap()、copy()和append()的使用方法。
|
3月前
|
存储 编译器 Go
|
3月前
|
存储 Go 数据处理
C 数组和 Go 切片的区别详解
【8月更文挑战第31天】
38 0
|
3月前
|
人工智能 编译器 Go
Go从入门到放弃之数组、切片
Go从入门到放弃之数组、切片
|
3月前
|
算法 安全 Go