Go学习笔记三(数据类型)

作者: Jabir_Zhang | 来源:发表于2019-07-11 07:38 被阅读2次

数组和切⽚

数组的声明

var a [3]int //声明并初始化为默认零值 
a[0] = 1

b := [3]int{1, 2, 3} //声明同时初始化 
c := [...]int{1, 2, 3} //不指定元素个数
d := [2][2]int{{1, 2}, {3, 4}} //多维数组初始化

数组元素遍历

与其他主要编程语⾔言的差异

func TestTravelArray(t *testing.T) {
  a := [...]int{1, 2, 3, 4, 5} //不指定元素个数
  for idx/*索引*/, elem/*元素*/ := range a { 
     fmt.Println(idx, elem)
  } 
}

idx是索引,elem是元素,如此能遍历数组能同时得到索引和元素,打印结果如下图


打印结果

数组截取

a[开始索引(包含), 结束索引(不包含)]

a := [...]int{1, 2, 3, 4, 5}
a[1:2]  //2
a[1:3]  //2,3
a[1:len(a)]  //2,3,4,5
a[1:]   //2,3,4,5
a[:3]   //1,2,3

另外,go语言中数组可以直接比较。

切⽚声明

var s0 []int
s0 = append(s0, 1)
s := []int{}
s1 := []int{1, 2, 3}
s2 := make([]int, 2, 4)
/*[]type, len, cap 其中len个元素会被初始化为默认零值,未初始化元素不不可以访问
*/

切片内部结构切片共享存储结构将会有单独的文章记录心得,此文章暂不提及。
切片和数组最大的区别在于申明的时候,切片没有指定长度,而数组会指定长度。

数组 vs. 切⽚

  1. 容量是否可伸缩 (切片可伸缩
  2. 是否可以进⾏比较(数组可比较

Map

Map 声明

m := map[string]int{"one": 1, "two": 2, "three": 3}
m1 := map[string]int{}
m1["one"] = 1
m2 := make(map[string]int, 10 /*Initial Capacity*/)

Map 元素的访问

与其他主要编程语言的差异
在访问的 Key 不存在时,仍会返回零值,不能通过返回 nil 来判断元素是否存在。应如此判断:

if v, ok := m["four"]; ok {
  t.Log("four", v)
} else {
  t.Log("Not existing")
}

Map 遍历

m := map[string]int{"one": 1, "two": 2, "three": 3}
for k, v := range m {
  t.Log(k, v) 
}

map可以实现工厂模式,会有单独文章介绍。

相关文章

  • GO——学习笔记(二)

    上篇:GO——学习笔记(一) 下篇:GO——学习笔记(三) 参考: https://github.com/asta...

  • GO——学习笔记(四)

    上篇:GO——学习笔记(三) 下篇:GO——学习笔记(五) 参考: https://github.com/asta...

  • Go学习笔记三(数据类型)

    数组和切⽚ 数组的声明 数组元素遍历 与其他主要编程语⾔言的差异 idx是索引,elem是元素,如此能遍历数组能同...

  • 笨办法学golang(三)

    这是Go语言学习笔记第三篇。 Go语言学习笔记参考书籍「Go语言圣经」以及Go官方标准库 Go语言基本类型主要有布...

  • Go语言开发资料收集

    【Go 边看边练 -《Go 学习笔记》】系列Go 边看边练 -《Go 学习笔记》系列(一)- 变量、常量Go 边看...

  • Go的基础知识

    go语言学习笔记 一. 基本结构,基本数据类型 1. 文件名、关键字与标识符 Go 的源文件以 .go 为后缀名存...

  • GO——学习笔记(五)

    上篇:GO——学习笔记(四) 下篇:GO——学习笔记(六) 示例代码——go_4 https://github.c...

  • GO——学习笔记(十):搭建简单的Web服务器

    上篇:GO——学习笔记(九) 下篇:GO——学习笔记(十一) 参考: https://github.com/ast...

  • GO——学习笔记(六)

    上篇:GO——学习笔记(五) 下篇:GO——学习笔记(七) 参考: https://github.com/asta...

  • GO——学习笔记(九):并发

    上篇:GO——学习笔记(八) 下篇:GO——学习笔记(十) 参考: https://github.com/asta...

网友评论

    本文标题:Go学习笔记三(数据类型)

    本文链接:https://www.haomeiwen.com/subject/lmslkctx.html