Go语言复合数据类型 | 青训营笔记

92 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

本人是一名Java选手,虽说两种语言有些许的相似性,对于 golang 来说,还需要学习很多东西。 要想入门一门语言,其语法是重中之重,打好基础,后期框架的使用才会得心应手。


Go语言基础

复合数据类型——Map

在Go语言中,一个Map就是一个哈希表的引用,map类型可以写为map[K]V,对应key和value的数据类型

定义map

使用内置的make函数创建map:

ages := make(map[string]int) // mapping from strings to ints

也可以使用map字面值的语法创建map,并初始化一些值:

ages := map[string]int{
    "alice":   31,
    "charlie": 34,
}

使用map

插入或修改键值对元素:

ages["bob"] = 54

使用内置的delete函数来删除键值对元素:

delete(ages, "bob")

遍历map中的所有键值对元素:

for name, age := range ages {
    fmt.Printf("%s\t%d\n", name, age)
}

复合数据类型——结构体struct

结构体,可以类比Java中的类,但也不完全一样,结构体用来表示一个实体,实体中的所有信息包含在结构体当中,作为一个整体的实体单元。

定义struct

结构体使用struct关键字进行定义

type Employee struct {
    ID        int
    Name      string
    Address   string
    DoB       time.Time
    Position  string
    Salary    int
    ManagerID int
}

var dilbert Employee

结构体的成员变量

对于结构体中的成员变量,我们可以通过点操作符来访问结构体变量中的成员,也可以对结构体的成员变量取地址,然后通过指针的方式来访问

dilbert.Salary -= 5000 // 可以直接修改某个变量的成员变量值
position := &dilbert.Position
*position = "Senior " + *position // 通过指针的形式来操作结构体变量的成员变量

其他

结构体可以像其他数据类型一样将结构体类型作为参数传递给函数,在函数中对结构体进行相应的操作,或者定义一个结构体类型的指针,指向结构体,通过操作指针变量来间接操作结构体。