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

2023-02-0410:46:25编程语言入门到精通Comments796 views字数 1572阅读模式

数组

一维数组

定义一维数组的语法是:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/30705.html

arr := [元素个数]元素类型{元素列表}

示例:定义和遍历一维数组文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/30705.html

package main

import "fmt"

func main() {
	arr := [3]int{1, 2, 3}
	for _, v := range arr {
		fmt.Println(v)
	}
}

二维数组

定义二维数组的语法是:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/30705.html

arr := [外层元素个数][内层元素个数]元素类型{元素列表}

示例:定义和遍历二维数组文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/30705.html

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

切片

切片的定义

切片是基于数组的一种动态数据类型,能够动态的修改其长度,非常的灵活。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/30705.html

示例:创建一维和二维的切片文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/30705.html

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语言中非常常用的一种数据结构,掌握其常用的增删改查方法非常有必要。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/30705.html

示例:切片的增删改查文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/30705.html

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方法文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/30705.html

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方法文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/30705.html

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:整数切片的排序文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/30705.html

package main

import (
	"fmt"
	"sort"
)

func main() {
	arr := []int{33, -11, 11, 22}
	fmt.Println(arr)

	// 排序
	sort.Ints(arr)
	fmt.Println(arr)
}

示例代码2:自定义类型排序文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/30705.html

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)
}
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/30705.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/30705.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定