Go语言圣经(中文版)读书笔记(四)
来源:互联网 发布:sdl编程 编辑:程序博客网 时间:2024/04/29 18:54
4.复合数据类型
- 数组
- Slice
- Map
- 结构体
- JSON
- 文本和HTML模板
数组
var a [3]int //数组的长度是固定的,声明之后没有赋值的会自动复制默认值。 q := [...]int{1, 2, 3}
书中有一个例子,我觉得特别好。
给数组玩出了MAP的感觉。
type Currency intconst ( USD Currency = iota // 美元 EUR // 欧元 GBP // 英镑 RMB // 人民币)symbol := [...]string{USD: "$", EUR: "€", GBP: "£", RMB: "¥"}fmt.Println(RMB, symbol[RMB]) // "3 ¥"
注意:由于函数参数的传递机制,导致在传大数组的时候特别低效,这时候可以传指向数组的指针。
如果数组的类型是可以比较的,那么数组也能用==
来比较
Slice
类似一种没有长度的数组,然而他不能用==来相互比较。但是可以跟nil比。
append函数,往slice里添加元素 slice=(append(slice,value))
此处的=
是必不可少的。
每一次容量的变化都会导致重新分配内存和copy操作。当len
等于cap
时,再添加数据cap
会翻倍。
MAP:
1. ages := make(map[string]int) //使用内建的make函数2. ages := map[string]int{ "alice": 31, "charlie": 34,}3.delete(ages, "alice")//删除元素
结构体:多种数据类型的集合
type Employee struct { ID int Name string Address string DoB time.Time Position string Salary int ManagerID int}
结构体还能包含其他结构体,并且在名字没有冲突的情况下可以简单是使用.
+id
引用。传递较大的结构体的时候,可以使用指针来传输。 p :=&Point{}
JSON:
//定义结构体type Movie struct { Title string Year int `json:"released"` Color bool `json:"color,omitempty"` Actors []string}//数据var movies = []Movie{ {Title: "Casablanca", Year: 1942, Color: false, Actors: []string{"Humphrey Bogart", "Ingrid Bergman"}}, {Title: "Cool Hand Luke", Year: 1967, Color: true, Actors: []string{"Paul Newman"}}, {Title: "Bullitt", Year: 1968, Color: true, Actors: []string{"Steve McQueen", "Jacqueline Bisset"}}, // ...}//输出,但是没有格式化,输出的结果不好读data, err := json.Marshal(movies)if err != nil { log.Fatalf("JSON marshaling failed: %s", err)}fmt.Printf("%s\n", data)//格式化输出结果,每一行隔了一个空格,每一层隔4个空格data, err := json.MarshalIndent(movies, "", " ")if err != nil { log.Fatalf("JSON marshaling failed: %s", err)}fmt.Printf("%s\n", data)
文本和HTML模板
有点像java 的jsp,在静态的文本或html中添加动态的数据。
1 0
- Go语言圣经(中文版)读书笔记(四)
- Go语言圣经(中文版)读书笔记
- Go语言圣经(中文版)读书笔记(一)
- Go语言圣经(中文版)读书笔记(二)
- Go语言圣经(中文版)读书笔记(三)
- Go语言圣经(中文版)读书笔记(五)
- Go语言圣经(中文版)
- 《GO语言圣经》读书笔记(一)
- Go语言圣经
- Go语言圣经
- 《go语言圣经》之程序结构
- 最新Go语言圣经 gopl-zh
- 43.笔记go语言圣经——go语言特性
- 45.笔记go语言圣经——go语言变量
- 42.笔记go语言圣经——go起源
- 46.笔记go语言圣经——go运行时
- 48.笔记go语言圣经——go图形化
- Go语言编程(旧读书笔记)
- linux下iconv编码转换的用法
- cisco3560配置DHCP
- HTTPS和HTTP的区别
- int (*a)[10] 和 int *a[10] 的区别
- css文件开头需要注意的几点(有待补充)
- Go语言圣经(中文版)读书笔记(四)
- oracle查询(指定行号,范围输出)
- Struts2中获取request,session,application对象
- JAVA关于字符串String
- Spring Boot(1),从最简单的开始
- iOS学习(九)Objective-C self和super
- 【Nginx】入门熟悉
- JAVA虚拟机体系
- AR如何动态加载模型资源并且将模型资源赋予某一个ImageTarget