写点什么

Go- map 的定义

用户头像
HelloBug
关注
发布于: 1 小时前
Go- map的定义

Go 学习笔记,学习内容《Go入门指南》


主要介绍以下内容:

  • 测试可以用 == != 比较的类型

  • map 的定义


代码示例可以直接运行

package main
import ( "fmt")
func printDivider(str ...string) { fmt.Println() fmt.Println("-----------------------------------------------") if len(str) > 0 { fmt.Println(str) }}
func main() { printDivider("测试可以用 == != 比较的类型") /* 可以进行比较的类型:整型、字符串、浮点、数组、普通指针、函数指针 不可以进行比较的类型:切片、结构体 */ a1 := [2]int{1, 2} a2 := [2]int{1, 2} a3 := [2]int{1, 1} if a1 == a2 { fmt.Println("a1 == a2") // 输出:a1 == a2 }
if a1 == a3 { fmt.Println("a1 == a3") // 无输出 }
/* 切片之间不能互相比较 a4 := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0} s1 := a4[0:3] s2 := a4[0:3] if s1 == s2 { // 编译错误:invalid operation: s1 == s2 (slice can only be compared to nil) fmt.Println("s1 == s2") } */
/* map 的定义 key:可以用 == != 比较的类型 value:任意类型 */ printDivider("map 的定义") var m1 map[string]int // 定义一个指针,没有申请内存,只是创建了一个指向map的一个指针 fmt.Println(m1) // 输出:map[] //m1["a"] = 1 // 执行错误:panic: assignment to entry in nil map m1 = make(map[string]int) // 为map申请一块内存,如果没有初始化map,第一次会申请一个小内存,map内存的大小可以动态变更 m1["a"] = 1 fmt.Println(m1) // 输出:map[a:1]
m2 := make(map[string]float64, 20) // 定义一个map,并且申请内存,内存大小可以容纳20个元素 fmt.Println(m2) // 输出:map[] m2["a"] = 3.14 fmt.Println(m2) // 输出:map[a:3.14]
m3 := map[string][]string{"a": {"1", "2"}} // 内部会使用make申请内存? fmt.Println(m3) // 输出:map[a:[1 2]] m3["b"] = []string{"10", "20"} fmt.Println(m3) // 输出:map[a:[1 2] b:[10 20]]
m4 := map[int]func() int{ 1: func() int { return 1 }, 2: func() int { return 2 }, 3: func() int { return 3 }, } fmt.Println(m4) // 输出:map[1:0x8c85e0 2:0x8c8600 3:0x8c8620]}
复制代码


发布于: 1 小时前阅读数: 5
用户头像

HelloBug

关注

还未添加个人签名 2018.09.20 加入

还未添加个人简介

评论

发布
暂无评论
Go- map的定义