Go语言圣经(中文版)读书笔记(四)

4.复合数据类型

  1. 数组
  2. Slice
  3. Map
  4. 结构体
  5. JSON
  6. 文本和HTML模板

数组

    var a [3]int //数组的长度是固定的,声明之后没有赋值的会自动复制默认值。
    q := [...]int{1, 2, 3}

书中有一个例子,我觉得特别好。
给数组玩出了MAP的感觉。

type Currency int

const (
    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中添加动态的数据。

Go语言圣经》是Alan A.A. Donovan和Brian W. Kernighan合著的一本经典的Go语言教程,它详细介绍了Go语言的基础知识和核心概念。对于想要学习Go语言的初学者和有一定编程基础的人来说,这本书是一本非常好的学习资料。 《Go语言圣经》一书的电子版是指通过电子设备进行阅读的版本,可以在电脑、平板电脑或手机上阅读。相比纸质版,电子版便于携带和搜索,并且可以根据个人需求进行设置,比如调整字体大小、添加书签等。 获取Go语言圣经中文版电子版的途径有很多,首先可以在互联网上搜索相关资源,如在官方网站或一些知名技术社区上下载免费的电子版。其次,也可以购买正版的电子书籍,通常可以在各大电子书商城或在线书店上购买并下载。 对于学习Go语言的人来说,拥有一本《Go语言圣经》的电子版是非常方便的。通过电子版可以随时随地学习和阅读,不受时间和地点的限制。而且,在电子版中往往还会包含一些额外的资源,比如代码示例、习题答案等,帮助读者更好地理解和实践书中的知识。 总之,《Go语言圣经中文版电子版是一本非常好的学习Go语言的资料,对于想要掌握Go语言编程的人来说是必备的工具之一。读者可以根据自己的需求选择适合自己的电子书阅读方式,并充分利用书中的资源和实践来提升自己的编程技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值