美文网首页Golang 入门资料+笔记
《GO语言圣经》学习笔记(五)map与结构体

《GO语言圣经》学习笔记(五)map与结构体

作者: 半亩房顶 | 来源:发表于2020-07-28 19:58 被阅读0次

map

Map的迭代顺序是不确定的

这是故意的,每次都使用随机的遍历顺序可以强制要求程序不依赖具体的哈希函數实现。如果要按顺序遍历key/value,我们必须显式地对key进行排序,可以使用sort包的Strings函数对字符串slice进行排序。下面是常见的处理方式:

import "sort"

var names []string
for name := range ages {
    names = append(names, name)
}
sort.Strings(names)
for _, name := range names {
    fmt.Printf("%s\t%d\n", name, ages[name])
}

向一個nil值的map存入元素将导致一个panic异常:

ages["carol"] = 21 // panic: assignment to entry in nil map

判断map值是否存在

if age, ok := ages["bob"]; !ok { /* ... */ }

在这种场景下,map的下标语法将产生两个值;第二个是一个布尔值,用于报告元素是否真的存在。布尔变量一般命名为ok,特别适合马上用于if条件判断部分。

结构体

结构体是否可导出如何判断?

如果结构体成员名字是以大写字母开头的,那么该成员就是导出的;这是Go语言导出规则决定的。一个结构体可能同时包含导出和未导出的成员。

如果結構體成員名字是以大寫字母開頭的,那麽該成員就是導出的;這是Go語言導出規則決定的。一個結構體可能同時包含導出和未導出的成員。

结构体的零值是指每个成员都是零值

结构体比较

如果结构体的全部成员都是可以比较的,那么结构体也是可以比较的,那样的话两个结构体将可以使用==或!=运算符进行比较。相等比较运算符==将比较两个结构体的每个成员,因此下面两个比较的表达式是等价的:

type Point struct{ X, Y int }

p := Point{1, 2}
q := Point{2, 1}
fmt.Println(p.X == q.X && p.Y == q.Y) // "false"
fmt.Println(p == q)                   // "false"

结构体匿名成员

type Circle struct {
    Point
    Radius int
}

type Wheel struct {
    Circle
    Spokes int
}

得意于匿名嵌入的特性,我们可以直接访问叶子属性而不需要给出完整的路径:

var w Wheel
w.X = 8            // equivalent to w.Circle.Point.X = 8
w.Y = 8            // equivalent to w.Circle.Point.Y = 8
w.Radius = 5       // equivalent to w.Circle.Radius = 5
w.Spokes = 20

而且,匿名结构的可导出方法也可以类似属性这样直接调用,这其实就是go语言中面向对象的核心:组合

json

json内容赞不整理

文本&HTML

文本&HTML内容赞不整理


欢迎大家关注我的公众号


半亩房顶

相关文章

  • 《GO语言圣经》学习笔记(五)map与结构体

    map Map的迭代顺序是不确定的 这是故意的,每次都使用随机的遍历顺序可以强制要求程序不依赖具体的哈希函數实现。...

  • Go语言探索 - 10(原创)

    上一篇文章主要学习了Go语言的结构体以及结构体指针,本篇文章主要学习Go语言的切片以及Map。 Go语言数组的长度...

  • 笨办法学golang(三)

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

  • 漫画Go语言stuct转map或其他结构体的各种方式及性能

    赖思与甜甜,有趣有料有温度,技术学习有思路!在Go语言开发中,想把stuct转map或其他结构体,有哪些方式及各个...

  • 笨办法学golang(四)

    这是Go语言学习笔记的第四篇 Go语言学习笔记参考书籍「Go语言圣经」以及Go官方标准库 数组 数组是指一系列同类...

  • 《GO语言圣经》学习笔记(一)

    前言 终于开坑go语言圣经了,本系列笔记中会记录学习《GO语言圣经》中看到的知识点和引申学习。好的,话不多说,开始...

  • golang数据类型

    Go语言中有四种复合数据类型:数组,slice,map,结构体 数组和结构体都是聚合类型,长度固定。而slice和...

  • Golang聚合

    教程 Go Web 编程Go语言圣经(中文版) Tips Golang 学习笔记——交叉编译 & 部署Golang...

  • Go结构体、方法、接口

    1 结构体 Go语言中没有“类”的概念,也不支持像继承这种面向对象的概念。但是Go语言的结构体与“类”都是复合结构...

  • 第05天(异常、文本文件处理)_03

    11_通过结构体生成json.go 12_通过map生成json.go 13_json解析到结构体.go 14_j...

网友评论

    本文标题:《GO语言圣经》学习笔记(五)map与结构体

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