每日一个Go语言小语法-Go的数据结构

Go的数据结构

  • 数组
  • slice
  • map

以上除了slice我们都比较熟悉,slice切片可以理解成熟悉动态的数组,并不需要我们使用定义长度
老规矩直接上例子

数组

  • 注意使用两种定义方式,一般倾向于后者
package main

import (
	"fmt"
)

func DefineArray(){
	// 定义一个数组
	var x [5] int
	x[0] = 1
	x[2] = 2
	x[3] = 4
	fmt.Println("定义的数组值为:", x)

	// 直接定义未知长度的数组
	result := [...]int{5,6,7,8}
	fmt.Println(result)

func main() {
	DefineArray()
}
  • 此处注意的就是我们想要定一个未知长度的时候result := […]int{5,6,7,8} 这个很经常使用

Slice

package main

import (
	"fmt"
)

func DefineSlice(){
	// 定义一个slice
	var x [] int
	// append数据
	result := append(x,2,3,4)
	fmt.Println("该slice的值为:", result) // 输出值
	fmt.Println("该slice长度为:", len(result)) // 输出长度
	fmt.Println("该slice的初始化长度为:", cap(result))

	// 直接定义slice
	test := [] int {1,2,3,4}
	fmt.Println(test)

	// 选择固定的索引内的数值
	numbers := []int{5,6,7,8}
	fmt.Println("numbers[1:4] ==", numbers[1:4])
}


func main() {
)
	DefineSlice()
}
  • 这里介绍了slice的几个简单的用法
    • 类似python 切片的操作
numbers := []int{5,6,7,8}
fmt.Println("numbers[1:4] ==", numbers[1:4]) // 取1-4索引里面的这是
// output:[6 7 8]
  • 常用的append方法添加值
var x [] int
// append数据
result := append(x,2,3,4)
// output:[2 3 4]

Map

map众所周知 以查找速度闻名,如果你发现自己查找慢了,直接上map那速度翻的不止一倍

package main

import (
	"fmt"
)

func DefineMap() {
	// 定义一个map
	var x map[string]int
	x = make(map[string]int)  // 初始化map,如果不初始化会创建一个nil map ,这种类型无法保存键值对
	x ["key1"] = 2
	x ["key2"] = 3
	fmt.Println(x)

	// 直接顶一个map
	// make(map[key的数据类型][值的数据类型])
	result := make(map[string]int)
	result["key2"] = 4
	result["key3"] = 5
	fmt.Println(x)

	// 遍历map的key
	for key, value := range result{
		fmt.Printf("key:%v, value:%v\n",key,value)
	}

	// 判断是否存在
	val, exist := result["key3"] // 返回的value 是key对应的值,默认不存在为0, exist= True代表此key存在, 否则则为False
	fmt.Println(val, exist)


	// 删除元素
	delete(result, "key3")
	fmt.Println(result)
}

func main() {
	//DefineSlice()
	//DefineArray()
	//DefineMap()
	DefineSlice()
}

output:
map[key1:2 key2:3]
map[key1:2 key2:3]
key:key2, value:4
key:key3, value:5
5 true
map[key2:4]

你可能感兴趣的:(每日一个Go语言小语法-Go的数据结构)