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>
相关推荐
包括基本数据类型和复合数据类型。...复合数据类型包括数组(array)、切片(slice)、字典(map)、结构体(struct)和接口(interface)等。 此外,Go 语言还提供了指针(pointer)类型,用于存储变量的内存地址。
一、 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 学习笔记, 第 部分 语 第 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 控制流 ...
Google出品的GO语言,最近有火起来的趋势。据众大神说,GO语言弥补了C和C++还其他语言的缺陷,颇有白富美的感觉。 网络上搜索了一番,发现【吾爱】上并没有GO语言的视频下载,其他站点也很少提供GO语言的视频教学。 ...
Go语言中支持的数据结构包括: 数组(Array):一组具有相同类型的数据元素的集合,通过下标进行访问。 切片(Slice):动态数组,可以根据需要增加或删除元素,支持切片操作。 映射(Map):一组键值对的无序...
福马姆 一个Go包,用于解码HTTP表单和查询参数。 唯一的要求是或更高版本。 特征 maps , structs和slices无限嵌套。 在地图的值和键中支持... 附加到slice和array类型,但未明确指示索引。 注册自定义类型
跟无闻学Go语言:Go编程基础视频教程 的ppt讲义 第 1 课:Go 开发环境搭建 第 2 课:Go基础知识 第 3 课:类型与变量 第 4 课:常量与运算符 第 5 课:控制语句 第 6 课:数组 array 第 7 课:切片 slice 第 8 课:...
支持设置URL查询(可传struct,map,array,slice,string等类型) 支持设置json编码到请求body里面(可传struct,map,string,[] byte等类型) 支持设置xml编码到请求正文里面(可传struct,string,[] byte等类型...
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 ...
,然后根据struct的层次结构获取struct中的值,然后进行验证。 当通过fieldExpr获取值时,如果该字段是指针,则将获取指针的基础值进行验证; fieldExpr ,该字段将fieldExpr 。 如果字段为nil指针,则验证规则失败...
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 ...
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 执⾏...
Go语言特性 1.1 slice type slice struct { array unsafe.Pointer len int cap int } slice在底层实现上主要分为三个部分:数组指针、当前长度、容量,在append添加元素的时候会进行扩容,扩容算法>1024的时候,...
The Way to Go,: A Thorough Introduction to the Go Programming Language 英文书籍,已Cross the wall,从Google获得书中源代码,分享一下。喜欢请购买正版。 目录如下: Contents Preface......................
go程序设计语言 Contents Preface................................................................................................................................. xix PART 1—WHY LEARN GO—GETTING ...