Go语言快速入门笔记(3)--函数,指针,srtuct结构体,interface接口,Error错误,panic恐慌和recover恢复

Butterfly ·
更新时间:2024-11-14
· 693 次阅读

GO语言快速入门函数func(形参列表)[(返回值)]指针&*类/结构体struct接口interface错误Error恐慌panic和恢复recoverGo语言快速入门笔记系列传送门 函数func(形参列表)[(返回值)] func 函数名(形参列表) [返回值/(返回值列表)]{ ... [return 返回值,返回值...] } 1.形参: 标准形参:变量名 变量类型, eg. num int 可变参数:参数名称 ... 参数类型 *传入的可变参数本质上是切片 *可变参数只能放在形参列表末尾 2.返回值: *返回值列表可以写多个返回值,但需要加圆括号,例:(int,string,...) *返回值列表元素:[返回值变量名] 返回值类型 *若注明返回值变量名则直接使用return,否则需要手动写return列表 3.匿名函数: func (形参列表)[返回值]{ ... [return 返回值] }(实参列表) 4.函数可以赋值给变量--函数是一等对象 *函数可以作为参数传入 *函数可以作为返回值返回 5.defer修饰符 defer fun() //在调用方法前加上defer 作用:fun函数和实参将压栈并在本代码块返回前的最后时刻逐个弹出执行 指针&* 同C语言 注意:这里的指针类型请声明为`*datatype` 类/结构体struct //定义: type 类名 struct{ 属性名 属性类型 } //方法 func (类变量名 *类名) 方法名(形参列表) [(返回值列表)]{ //函数体 } //实例化: var 变量名 类名 变量名 := 类名{k:v, ...}/{v1, v2, ...} new(类名) //注意new方法创建的是对象的指针 //属性访问: 变量名.成员名 //匿名结构体 struct{ 属性名 属性类型 }{实属性列表} //匿名字段 属性声明中,没有属性名只有属性类型,属性名为类型名 1.类名首字母大写表公有类型,小写表私有类型 2.type等价于C语言中的typedef 3.继承: 实现:将父类结构体作为匿名字段写入子类属性,即提升字段 注意点:go语言的继承没有重载只有覆盖 接口interface //定义 type 接口名称 interface{ 方法名(形参列表)[()] ... } //接口实现 实现类直接写接口内所有方法实现即可 1.接口类型可以作为参数传入函数,实参为接口的实现类 2.空接口可以理解为java中的元类Object 错误Error //创建 errors.New(错误信息) //返回错误的指针 //获取错误信息 err.Error() *注意错误Error只是普通结构体,不会造成程序中断,而panic恐慌会使程序终端 恐慌panic和恢复recover //恐慌抛出(抛出异常) panic(恐慌原因) //恐慌恢复(异常处理) defer func(){ //异常处理代码 recover() }() *注意recover异常处理匿名函数必须在panic之前被defer *注意go语言建议尽量少使用panic恐慌而用多值返回error来代替 Go语言快速入门笔记系列传送门

Go语言快速入门笔记(1)–变量var,分支if else,循环for,fmt简单输入输出

Go语言快速入门笔记(2)–值类型和引用类型,silce切片,map映射

Go语言快速入门笔记(3)–函数,指针,srtuct结构体,interface接口,Error错误,panic恐慌和recover恢复

Go语言快速入门笔记(4)–协程并发go关键字,通道chan,select语句

Go语言快速入门笔记(5)–PV原语简介,sync包实现互斥与同步


作者:无知影



panic GO interface 函数 error 指针 go语言

需要 登录 后方可回复, 如果你还没有账号请 注册新账号