Map的golang概念用法及如何把EXCEL各个工作表的单元格值按多维组合输出到Map
Posted VBA语言专家
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Map的golang概念用法及如何把EXCEL各个工作表的单元格值按多维组合输出到Map相关的知识,希望对你有一定的参考价值。
Map一词有的资料上翻译为”映射”,有的翻译为”字典”,都是将键映射到值的一种表达方式,是一堆键值对的未排序集合。
在一些语言中,如果要使用map,事先要引用相应的库。而在Go中,使用map不需要引入任何库,并且用起来也更加方便。
Map的零值为 nil
.nil
映射既没有键,也不能添加键。
make
函数会返回给定类型的映射,并将其初始化备用。
m := make(map[string]int)
Map与数组的区别:数组是索引对应数组元素,而字典是键对应值。
要从map中查找一个特定的键,可以通过下面的代码来实现:
value, ok :=myMap["1234"]
if ok { // 找到了
// 处理找到的value
}
判断是否成功找到特定的键,不需要检查取到的值是否为nil,只需查看第二个返回值ok,这让表意清晰很多。配合:=操作符,让你的代码没有多余成分,看起来非常清晰易懂。
好了,下面我们看如何把EXCEL输出到多维Map
上代码:
1 package main
2
3 import (
4 "fmt"
5 "github.com/tealeg/xlsx"
6 //"log"
7 )
8
9 func main() {
10 f, err := xlsx.OpenFile("./book1.xlsx")
11 if err != nil {
12 fmt.Println(err)
13 return
14 }
15 //每次创建一个一维 map 都要make() 一次,不然就会 panic.
16 //多维 map 每加一层都要多make() 好几次.
17 file_result := make(map[int]map[int]map[int]string)
18 for a, sheet := range f.Sheets {
19 sheet_result :=make(map[int]map[int]string)
20 for b, row := range sheet.Rows {
21 row_result :=make(map[int]string)
22 for c, cell := range row.Cells{
23 row_result[c] = cell.Value
24 fmt.Println(cell.Value)
25 }
26
27 sheet_result[b] = row_result
28
29 }
30
31 file_result[a] = sheet_result
32
33 }
34 fmt.Println(file_result)
35 for v, value := range file_result {
36 for v2, value2 := range value {
37 for v3, value3 := range value2{
38 fmt.Println("第", v+1, "个工作表,", "第", v2+1, "行", "第", v3+1, "列数值为:", value3, " ")
39 }
40 }
41 }
42
43 }
截图:
讲解:每次创建一个维度 map 都要 make() 一次,不然就会 panic,多维 map 每加一层都要多 make() 一次.这一点要特别注意,上述代码在range单元格时要输出内容;然后输出Map的键对值;最后再输出详细的信息。好,看输出:
非常的漂亮。
分享成果,随喜正能量。
以上是关于Map的golang概念用法及如何把EXCEL各个工作表的单元格值按多维组合输出到Map的主要内容,如果未能解决你的问题,请参考以下文章