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的主要内容,如果未能解决你的问题,请参考以下文章

golang channle 管道

golang sync.Pool的用法及实现

golang中map的Big O表现如何?

golang下载excel

golang怎么把interface转化为map

golang怎么把map转化为interface