【笔记】GO内建容器--数组
go内建容器--数组
1.数量要写在类型的前面
2.可通过_省略变量
3.不仅是range,任何地方都可以使用_来省略变量
4.如果只要i,则可写成for i := range numbers
5.[10]int和[5]int是不同的类型
6.调用func f(arr [10]int)会对数组进行拷贝
7.在go语言中一般不直接使用数组
// 定义数组
var arr1 [5]int
arr2 := [3]int{1, 2, 3}
arr3 := [...]int{1, 2, 3, 4, 5}
var gridint = [4][5]int
var gridbool = [4][5]bool
// 遍历数组
for i := 0; i<len(arr3); i++{
fmt.Println(arr3[i])
}
// 使用range遍历
for i := range arr3{
arr2[i]
}
//i, v 可以获取对应元素的值, 如果不想要下标,可通过_省略内容
for i, v := range arr3{
fmt.Println(i, v)
}
for _, v := range arr2{
fmt.Println(v)
}
//求和
sum := 0
for _, v := range arr2{
sum += v
}
// 数组是值类型,在go语言中,[]int和[5]int意义不同,[]int是数组的切片,[5]int才是真正的数组,且不同长度的数组,类型不一样, 如[5]int,传入长度非5的数组会报错,因为是值类型,在里面改变的值,在外面是不会改变的,例如将arr的第一个元素改为100,外面的arr是不会改变的,也就是说,值类型在操作的时候是会进行拷贝
func printArray(arr [5]int){
for i, v := range arr{
fmt.Println(i, v)
}
}
printArray(arr1)
printArray(arr3)
printArray(arr2)//会报错
为什么要使用range?
因为意义明确同时还比较美观
c++没有类似于range的能力,java以及python中只能for each value,不能同时获取i和v
您能读到这儿,我呢是发自真心的感谢您,若要转载,还望请您带上链接
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2021-01-17 【笔记】如何确定梯度计算的准确性以及调试梯度下降法
2021-01-17 【笔记】随机梯度下降法
2021-01-17 【笔记】线性回归中的梯度下降法(实现以及向量化并进行数据归一化)
2021-01-17 AttributeError: module 'numpy' has no attribute 'num'
2021-01-17 【笔记】模拟梯度下降法的实现