`

Go语言的复合数据类型struct,array,slice,map

 
阅读更多

1、结构体 struct

定义格式:

type 结构体名称 struct {
    属性1    类型
    属性2    类型
    ...
}

结构体的初始化可以使用new关键词和var关键词,不同的是如果使用new,则返回类型是一个指针,使用var,则是结构体自身。

type User struct {
    name    string
    age     int
}

user := new(User)
user.name = "tom"
user.age = 20

fmt.Println(user) //输出&{tom 20}

上例中使用new来初始化一个结构体,user的类型就是*User,在输出内容中的&字符号也表现了这点。接下来看下使用var的情况:

type User struct {
    name    string
    age     int
}

var user User
user.name = "tom"
user.age = 20

fmt.Println(user) //输出{tom 20}

这里输出中没有&符号了。

如果结构体属性比较多,每个属性初始化都要一行,代码就显的比较冗长,Go语言提供更简洁的写法:

type User struct {
    name    string
    age     int
}

user := User{"tom", 20} //按顺序给属性赋值
//user := User{age: 20, name: "tom"} //指明属性赋值
fmt.Println(user)

要注意的就是如果不指明属性,就是按照结构体内属性的先后顺序进行赋值。

2、数组 array

数组使用很广泛,很多语言都有会有数组的实现。

定义格式:

[长度]类型{初始化值}

其中长度可以省略或者换成三个点“…”,如果这么做的话,系统会根据初始化的值自动定义数组的长度。

简单的示例:

arr := [2]int{3, 2}
//arr := []int{3, 2} 
//arr := [...]int{3, 2}
fmt.Println(arr)  //输出[3 2]

如果指明了长度,但是没有初始值,则会根据数组类型初始化每个值

arr := [5]int{}
fmt.Println(arr) //输出[0 0 0 0 0]

3、切片 slice

切片可以和数组很好的配合使用,可以用来获取数组中一段数据。格式:

数组变量[开始索引:结束索引]

其中不包括结束索引。

arr := [5]int{3,4,5,6,7}
slice := arr[0:3]
fmt.Println(slice) //输出[3 4 5]

切片也可以用于字符串:

str := "Anny is a beautiful girl."
fmt.Print(str[0:6]) //输出Anny i

4、字典 map

在Go语言数组中,字符串是不能做键值的,我觉着字典很好的弥补了这个不足。

字典定义格式:

map[键类型] 值类型 {
    键: 值,
    ....
}

一个简单示例:

ages := map[string] int {
    "tom": 21,
    "anny": 18,
}

fmt.Println(ages["tom"])

使用字典时,还能动态添加字典元素,也很方便。

ages := map[string] int {
    "tom": 21,
    "anny": 18,
}

ages["jack"] = 20

fmt.Println(len(ages))

如果键在字典里是不存在的,则返回一个默认值,默认值根据不同的类型决定。

ages := map[string] int {
    "tom": 21,
    "anny": 18,
}

fmt.Println(ages["jack"]) //输出0
<!-- 336x280 --> <iframe id="aswift_1" style="left: 0px; top: 0px; position: absolute;" name="aswift_1" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="336" height="280"></iframe>

转载请注明:快乐编程 » Go语言的复合数据类型struct,array,slice,map

分享到:
评论

相关推荐

    Go 语言数据类型.docx

    包括基本数据类型和复合数据类型。...复合数据类型包括数组(array)、切片(slice)、字典(map)、结构体(struct)和接口(interface)等。 此外,Go 语言还提供了指针(pointer)类型,用于存储变量的内存地址。

    GO语言基础学习文档

    一、 GO语言环境搭建 2 二、 Go 命令 2 go build 3 go clean 4 go fmt 4 go get 4 go install 4 go test 4 go doc(godoc) 5 三、 Go基础 5 关键字 5 定义变量 5 常量 6 内置基础类型 6  Boolean 6  数值类型 6 ...

    Go 语言编程 + Go 学习笔记

    Go 语言编程 + Go 学习笔记, 第 部分 语 第 1 章 类型 1.1 变量 1.2 常量 1.3 基本类型 1.4 引 类型 1.5 类型转换 1.6 字符串 1.7 指针 1.8 定义类型 第 2 章 表达式 2.1 保留字 2.2 运算符 2.3 初始化 2.4 控制流 ...

    无闻Go语言视频教程

    Google出品的GO语言,最近有火起来的趋势。据众大神说,GO语言弥补了C和C++还其他语言的缺陷,颇有白富美的感觉。 网络上搜索了一番,发现【吾爱】上并没有GO语言的视频下载,其他站点也很少提供GO语言的视频教学。 ...

    go语言LeetCode刷题最全手册

    Go语言中支持的数据结构包括: 数组(Array):一组具有相同类型的数据元素的集合,通过下标进行访问。 切片(Slice):动态数组,可以根据需要增加或删除元素,支持切片操作。 映射(Map):一组键值对的无序...

    formam:一个用于在Go中将表单的值解码为struct的包

    福马姆 一个Go包,用于解码HTTP表单和查询参数。 唯一的要求是或更高版本。 特征 maps , structs和slices无限嵌套。 在地图的值和键中支持... 附加到slice和array类型,但未明确指示索引。 注册自定义类型

    Go编程基础-课堂讲义

    跟无闻学Go语言:Go编程基础视频教程 的ppt讲义 第 1 课:Go 开发环境搭建 第 2 课:Go基础知识 第 3 课:类型与变量 第 4 课:常量与运算符 第 5 课:控制语句 第 6 课:数组 array 第 7 课:切片 slice 第 8 课:...

    痛风:痛风成为http客户端的瑞士军刀@ ^^ @ ---&gt;痛风是http客户端领域的瑞士军刀,小巧,强大,犀利。具体用法可看文档,如使用迷惑或API用得不爽都可提问题

    支持设置URL查询(可传struct,map,array,slice,string等类型) 支持设置json编码到请求body里面(可传struct,map,string,[] byte等类型) 支持设置xml编码到请求正文里面(可传struct,string,[] byte等类型...

    Go 学习笔记 第四版

    go学习,思路清楚,易懂 第⼀一部分 语⾔言 8 第 1 章 类型 9 1.1 变量 9 1.2 常量 10 1.3 基本类型 13 1.4 引⽤用类型 14 1.5 类型转换 14 1.6 字符串 15 1.7 指针 17 1.8 ⾃自定义类型 19 第 2 章 表达式 21 2.1 ...

    checker:Golang参数验证,可以代替go-playgroundvalidator,包括不包括Cross Field,Map,Slice和Array跳水,提供可读,灵活,可配置的验证

    ,然后根据struct的层次结构获取struct中的值,然后进行验证。 当通过fieldExpr获取值时,如果该字段是指针,则将获取指针的基础值进行验证; fieldExpr ,该字段将fieldExpr 。 如果字段为nil指针,则验证规则失败...

    Go学习笔记(第四版).zip

    4.1 Array 39 4.2 Slice 40 4.3 Map 45 4 Go 学习笔记, 第 4 版 4.4 Struct 47 第 5 章 ⽅法 53 5.1 ⽅法定义 53 5.2 匿名字段 54 5.3 ⽅法集 56 5.4 表达式 56 第 6 章 接⼝ 60 6.1 接⼝定义 60 6.2 执⾏机制 62 ...

    go学习笔记

    4.1 Array 39 4.2 Slice 40 4.3 Map 45 Go 学习笔记, 第 4 版 4 4.4 Struct 47 第 5 章 ⽅方法 53 5.1 ⽅方法定义 53 5.2 匿名字段 54 5.3 ⽅方法集 56 5.4 表达式 56 第 6 章 接⼝口 60 6.1 接⼝口定义 60 6.2 执⾏...

    leetcode下载-unknown_interview:未曾被人面过的golang的面试题,答案也是未被确认过的,也没有拿到offer

    Go语言特性 1.1 slice type slice struct { array unsafe.Pointer len int cap int } slice在底层实现上主要分为三个部分:数组指针、当前长度、容量,在append添加元素的时候会进行扩容,扩容算法&gt;1024的时候,...

    [Go语言入门(含源码)] The Way to Go (with source code)

    The Way to Go,: A Thorough Introduction to the Go Programming Language 英文书籍,已Cross the wall,从Google获得书中源代码,分享一下。喜欢请购买正版。 目录如下: Contents Preface......................

    The way to go

    go程序设计语言 Contents Preface................................................................................................................................. xix PART 1—WHY LEARN GO—GETTING ...

Global site tag (gtag.js) - Google Analytics