Go语言编程入门:数组和切片
数组
一维数组
定义一维数组的语法是:
arr := [元素个数]元素类型{元素列表}
示例:定义和遍历一维数组
package main
import "fmt"
func main() {
arr := [3]int{1, 2, 3}
for _, v := range arr {
fmt.Println(v)
}
}
二维数组
定义二维数组的语法是:
arr := [外层元素个数][内层元素个数]元素类型{元素列表}
示例:定义和遍历二维数组
package main
import "fmt"
func main() {
arr := [3][3]int{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
}
for _, v := range arr {
for _, vv := range v {
fmt.Print(vv, "\t")
}
fmt.Print("\n")
}
}
切片
切片的定义
切片是基于数组的一种动态数据类型,能够动态的修改其长度,非常的灵活。
示例:创建一维和二维的切片
package main
import "fmt"
func main() {
// 一维切片
arr1 := []int{1, 2, 3, 4}
for _, v := range arr1 {
fmt.Println(v)
}
// 二维切片
arr := [][]int{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
}
for _, v := range arr {
for _, vv := range v {
fmt.Print(vv, "\t")
}
fmt.Print("\n")
}
}
切片增删改查
切片是Go语言中非常常用的一种数据结构,掌握其常用的增删改查方法非常有必要。
示例:切片的增删改查
package main
import "fmt"
func main() {
// 定义切片
var arr []string
// 添加
arr = append(arr, "a")
arr = append(arr, "b", "c")
fmt.Println(arr)
// 删除
index := 1
arr = append(arr[:index], arr[index+1:]...)
fmt.Println(arr)
// 修改
arr[index] = "cc"
fmt.Println(arr)
// 查询
fmt.Println(arr[0])
}
切片的复制
示例代码1:使用append方法
package main
import "fmt"
func main() {
arr := []string{"a", "b", "C"}
// 复制
var arr1 []string
arr1 = append(arr1, arr...)
fmt.Println(arr1)
fmt.Println(arr)
}
示例代码2:使用copy方法
package main
import "fmt"
func main() {
arr := []string{"a", "b", "C"}
// 复制
var arr1 = make([]string, len(arr))
copy(arr1, arr)
fmt.Println(arr1)
fmt.Println(arr)
}
切片的排序
示例1:整数切片的排序
package main
import (
"fmt"
"sort"
)
func main() {
arr := []int{33, -11, 11, 22}
fmt.Println(arr)
// 排序
sort.Ints(arr)
fmt.Println(arr)
}
示例代码2:自定义类型排序
package main
import (
"fmt"
"sort"
)
type Person struct {
Name string
Age int
}
func main() {
arr := []Person{
{"张三", 22},
{"李四", 21},
{"王五", 23},
}
fmt.Println(arr)
// 排序:根据年龄降序
sort.Slice(arr, func(i, j int) bool {
return arr[i].Age > arr[j].Age
})
fmt.Println(arr)
}
THE END






