4.4.例子 在本节中,我们将会介绍两个小例子,第一个例子介绍一维和二维切片,第二个例子介绍映射,包括值不唯一的映射反转,同时也会介绍切片和排序。 目录 作者:Johnson 原文:Go语言开发-集合类型-例子 出处:青梅酒博客 – Plum Wine Blog 原创文章,版权所有,转载…
Go net/http 超时机制完全手册
当用Go写HTTP的服务器和客户端的时候,超时处理总是最易犯错和最微妙的地方之一。错误可能来自很多地方,一个错误可能等待很长时间没有结果,直到网络故障或者进程挂起。 HTTP是一个复杂的、多阶段(multi-stage)协议,所以没有一个放之四海而皆准的超时解决方案,比如一个流服务、一个JSON A…
Go语言开发-集合类型-映射反转
4.3.5.映射反转 如果一个映射的值是唯一的且值的类型和键一样都是被支持类型的话,我们就可以很容易的将该映射进行反转操作。
1 2 3 4 5 6 7 | cityForPopulation := make(map[int]string, len(populationForCity)) for city, population := range populationForCity { cityForPopulation[population] = city } fmt.Println(cityForPopulation) map[12610000:Istanbul 11290000:Beijing 12690000:Mumbai 11620000:Karachi] |
因为populationForCity是map[string]int类型的,所以我们开始创建了一个反转的映射…
Go语言开发-集合类型-键序映射的遍历
4.3.4.键序映射的遍历 在实际使用中,我们经常需要以特定的顺序生成并展示这些数据。下面是一个例子,展示了如何以字母顺序(严格地说,是Unicode码点)输出映射populationForCity中的城市。
1 2 3 4 5 6 7 8 9 10 11 12 13 | cities := make([]string, 0, len(populationForCity)) for city := range populationForCity { cities = append(cities, city) } sort.Strings(cities) for _, city := range cities { fmt.Printf("%-10s %8d\n", city, populationForCity[city]) } Beijing 11290000 Istanbul 12610000 Karachi 11620000 Mumbai 12690000 |
我们首先创建了一个[]s…
Go语言开发-集合类型-修改映射
4.3.3.修改映射 元素,也就是“键-值”对,可以被插入到映射中,也可以从映射中删除掉,且任何键对应的值都可以被修改。请看下面的例子。
1 2 3 4 5 6 7 8 9 10 11 12 | fmt.Println(len(populationForCity), populationForCity) delete(populationForCity, "Shanghai") // Delete fmt.Println(len(populationForCity), populationForCity) populationForCity["Karachi"] = 11620000 // Update fmt.Println(len(populationForCity), populationForCity) populationForCity["Beijing"] = 11290000 // Insert fmt.Println(len(populationForCity), populationForCity) 4 map[Shanghai:13680000 Mumbai:12690000 Istanbul:12610000 Karachi:10620000] 3 map[Mumbai:12690000 Istanbul:12610000 Karachi:10620000] 3 map[Mumbai:12690000 Istanbul:12610000 Karachi:11620000] 4 map[Mumbai:12690000 Istanbul:12610000 Karachi:11620000 Beijing:11290000] |
映射的插入和更新语法是一样:如果给定的键不存在,则将给定的键和值插入到该映射中;而如果存在,则将…
Go语言开发-集合类型-映射查找
4.3.2.映射查找 对于映射的查找操作,Go语言提供了两种相似的语法,都是使用的[]索引操作符。下面是使用这两种语法的几个例子。
1 2 3 4 5 6 7 | population := populationForCity["Mumbai"] fmt.Println("Mumbai's population is", population) population = populationForCity["Emerald City"] fmt.Println("Emerald City's population is", population) Mumbai's population is 12690000 Emerald City's population is 0 |
如果我们查找的键存在,则返回对应的值,如果该键不存在,就返回映射的值的类型的零值。但是,在上面的例子中…