这是我参与「第五届青训营」笔记创作活动的第3天,今天我准备继续总结Go语言的基础——主要是函数与结构体,还有一些特殊的数据结构。
函数
基本形式
函数有一个返回值:
func 函数名(参数列表) 返回值类型{
函数体
return 返回值
}
函数有多个返回值:
func 函数名(参数列表) (返回值类型列表){
函数体
return 返回值列表
} //一般业务返回值有两个,第二个是错误信息
与其他语言不同,Go语言参数列表参数类型是后置的,例如:
fun func_test(n int){
...
}
函数指针
Go 语言中使用指针可以更简单的执行一些任务,如在Go中可以使用指针修改传入的参数值:
func 函数名(*参数名) 返回值类型{
函数体
return 返回值
} //用指针可修改传入参数值
结构体
结构体的定义
type 结构体名 struct{
成员变量名1 成员变量数据类型1 [`json:”json对应变量名”`]
成员变量名2 成员变量数据类型2
...
}
结构体方法
go语言中没有像类的概念,但是可以通过结构体struct实现面向对象编程。 这类似于其他语言的类的形式,使结构体可以调用其成员方法。
变量名:=结构体名{成员变量名1:变量值1, 成员变量名2:变量值2 ,...}
变量名:=结构体名{变量值1, 变量值2 ,...}
特殊数据结构
切片(Slice)
概念
个人觉得切片相当于可变长度的数组,在GoLang中常使用切片以规避数组必须定义长度的缺点。
切片的生成与使用
变量名:=make([]指定数据类型, n)
Go语言中,切片可以使用类似Python的切片操作取出其中元素:
例:s[2:5] //取得切片s的第3到第5个值返回其副本
还可以使用append方法向后添加元素
s=append(s, 数值1, 数值2, ...) //在切片s的末尾添加数值
字典(Map)
Go语言中字典其实类似于Python的字典类型,这里主要讲一下字典的生成与独有的特点。
字典的生成
变量名:=make(map[键数据类型]值数据类型)
特点
Go语言中,Map是完全无序的,遍历时不会按插入数据输出