数组
什么是数组
数组,即一维数组
数组是容器型数据结构
数组内的数据。必须是相同数据类型的数据
数组是需要定义大小的
数组的大小不可修改
数组是有序
使用any定义数组。该类型能接收不同类型的数组。
package main
import "fmt"
func main () {
var arr01 [4 ]int
var arr02 [4 ]string
fmt.Println("打印空数组:" , arr01)
fmt.Println("打印空数组:" , arr02)
arr01[0 ] = 1
arr01[1 ] = 2
arr01[2 ] = 3
fmt.Println("打印赋值后的数组:" , arr01)
fmt.Println("数组,下标取值:" , arr01[0 ])
fmt.Println("数组长度:" , len (arr01))
fmt.Println("数组容量:" , cap (arr01))
arr01[0 ] = 10
fmt.Println("修改后的数组:" , arr01)
var arr03 [10 ]int
fmt.Println("初始化数组1" , arr03)
var arr04 = [10 ]int {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 }
fmt.Println("初始化数组2" , arr04)
arr05 := [10 ]int {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 }
fmt.Println("初始化数组3" , arr05)
var arr06 = [...]int {1 , 3 , 4 , 1 , 3 , 41 , 3 , 41 , 3 , 41 , 3 , 41 , 3 , 41 , 3 , 4 }
fmt.Println("初始化数组4" , arr06)
fmt.Println("初始化数组4,长度" , len (arr06))
fmt.Println("初始化数组4,容量" , cap (arr05))
var arr007 [5 ]int
arr007 = [5 ]int {0 : 2 , 2 : 3 }
fmt.Println(arr007)
}
数组遍历
for i 下标
for range 循环
下标手动遍历
package main
import "fmt"
func main () {
var arrErgodic001 = [5 ]int {1 , 2 , 3 , 4 , 5 }
fmt.Println("手动下标取值:" , arrErgodic001[0 ])
fmt.Println("手动下标取值:" , arrErgodic001[1 ])
fmt.Println("手动下标取值:" , arrErgodic001[2 ])
fmt.Println("手动下标取值:" , arrErgodic001[3 ])
fmt.Println("手动下标取值:" , arrErgodic001[4 ])
for i := 0 ; i < len (arrErgodic001); i++ {
fmt.Println("for i 循环打印:" , arrErgodic001[i])
}
for index, value := range arrErgodic001 {
fmt.Println("for range 打印:" , index, value)
}
}
数组 copy
package main
import "fmt"
func main () {
var arrCopy = [10 ]int {1 , 2 , 3 , 4 , 5 }
fmt.Println(arrCopy)
fmt.Printf("%p\n" , &arrCopy)
fmt.Printf("%p\n" , &arrCopy[0 ])
fmt.Printf("%p\n" , &arrCopy[1 ])
fmt.Printf("%T\n" , arrCopy)
arrCopy1 := arrCopy
fmt.Printf("%p\n" , &arrCopy1)
fmt.Printf("%T\n" , arrCopy1)
arrCopy[0 ] = 10000
fmt.Println("【值拷贝】arrCopy" , arrCopy)
fmt.Println("【值拷贝】arrCopy1" , arrCopy1)
}
数组排序
package main
import "fmt"
func main () {
var arrSort = [10 ]int {16 , 64 , 23 , 45 , 67 , 21 , 22 , 33 , 1 }
fmt.Printf("%T" , arrSort)
fmt.Println("排序数组 【冒泡排序】:" )
for i1 := 1 ; i1 < len (arrSort); i1++ {
for j1 := 0 ; j1 < len (arrSort)-i1; j1++ {
fmt.Printf("外层:%d, 内层:第%d圈:比较:%d 和 %d\n" , i1, j1, arrSort[j1], arrSort[j1+1 ])
if arrSort[j1] > arrSort[j1+1 ] {
arrSort[j1], arrSort[j1+1 ] = arrSort[j1+1 ], arrSort[j1]
}
fmt.Println()
fmt.Printf("【第%d圈】:冒泡排序后的结果:%d\n" , i1, arrSort)
fmt.Println()
}
}
fmt.Println("冒泡排序后的结果:" , arrSort)
}
多维数组
package main
import "fmt"
func main () {
twoDimensionalArr := [3 ][4 ]int {
{2 , 2 , 3 , 5 },
{1 , 2 , 3 , 4 },
{1 , 2 , 3 , 7 },
}
fmt.Println("二维数组:" , twoDimensionalArr)
fmt.Println("二维数组取值:" , twoDimensionalArr[0 ])
fmt.Println("二维数组取值:" , twoDimensionalArr[0 ][0 ])
for i := 0 ; i < len (twoDimensionalArr); i++ {
for j := 0 ; j < len (twoDimensionalArr[i]); j++ {
fmt.Println("for i【二维数组】:" , twoDimensionalArr[i][j])
}
}
for index, v2 := range twoDimensionalArr {
fmt.Println("for range【二维数组】:" , index, v2)
}
threeDimensionalArr := [3 ][4 ][2 ]int {
{{3 , 2 }, {3 , 4 }, {5 , 6 }, {5 , 6 }},
{{1 , 2 }, {3 , 4 }, {5 , 6 }, {5 , 6 }},
{{1 , 2 }, {3 , 4 }, {5 , 6 }, {5 , 6 }},
}
fmt.Println("三维数组:" , threeDimensionalArr)
fmt.Println("三维数组取值:" , threeDimensionalArr[0 ])
fmt.Println("三维数组取值:" , threeDimensionalArr[0 ][0 ])
fmt.Println("三维数组取值:" , threeDimensionalArr[0 ][0 ][0 ])
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2019-07-02 Python进阶(十二)----re模块