Go- map 的定义
发布于: 1 小时前
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
版权声明: 本文为 InfoQ 作者【HelloBug】的原创文章。
原文链接:【http://xie.infoq.cn/article/a51a4bf4cac035a123c3f284e】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。
HelloBug
关注
还未添加个人签名 2018.09.20 加入
还未添加个人简介
评论