Go语言课程笔记之函数与结构体|青训营笔记

79 阅读2分钟

这是我参与「第五届青训营」笔记创作活动的第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是完全无序的,遍历时不会按插入数据输出