Go语言编程入门:数组和切片

2023年 7月 12日 55.2k 0

数组

一维数组

定义一维数组的语法是:

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)
}

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论