go语言[7] 函数,方法和接口
2018-02-02 17:45
537 查看
函数
函数的定义与使用参数,返回值,多个返回值
不定长变参
func Add(a int, args ...int) (result int)
不定长参数只能放在最后,使用时,可以当成一个切片
传递值类型和引用类型
go语言中的引用类型有:切片、字典(map)、接口、函数类型 以及 通道(chan)
匿名函数与闭包
defer 用法
panic 与 recover
panic后面的代码不会执行,recover一般写在defer中。
当出现panic时,会开始执行其之前的defer,执行完毕后程序会退出。在panic之后的defer不会执行。
方法
和普通函数相比,方法默认的第一个参数是类型本身。当方法是类型的指针的方法时,可以使用类型或者类型指针去调用。但是如果方法是类型的方法,那么只能用类型去调用。type Person struct { name string age int } func (p *Person) addAge(num int) { fmt.Println(p.age) p.age += num } 调用: var p Person = Person{} p.addAge(10) fmt.Println(p.age)
由于方法的第一个参数是类型本身,所以也可以这样调用:
(*Person).addAge(&p, 20)
接口
接口的定义与基本操作嵌入接口
类型断言
空接口与 type switch
package main import ( "fmt" ) type Usb interface { Aprint(str string) } type Usb1 struct { name string } func (c Usb1) Aprint(str string) { fmt.Println(c.name) } func main() { var d Usb = Usb1{"usb1"} //--- if u1, ok := d.(Usb1); ok { fmt.Println(u1.name) } //---- switch v := d.(type) { case Usb1: fmt.Println(v.name) default: fmt.Println("unkonw type") } }
接口转换
接口使用注意事项
相关文章推荐
- GO语言学习笔记3(函数接口并发)
- Go语言中普通函数与方法的区别
- go语言函数传递问题(map、切片、接口、chan)
- Go 语言中的方法,接口和嵌入类型
- Go语言 6 结构体、方法和接口
- Java Lambda(语言篇——lambda,方法引用,目标类型,默认方法,函数接口,变量捕获)
- Go语言中函数的参数传递与调用的基本方法
- GO语言学习-方法和接口
- Go语言学习笔记(六)-方法和接口
- Go基础 - 5 函数,结构,方法,接口
- Go语言中普通函数与方法的区别
- Go 语言中的方法,接口和嵌入类型
- Go语言中接口组合的实现方法
- Go语言中普通函数与方法的区别分析
- Go 语言中的方法,接口和嵌入类型
- 9.笔记go语言——方法和接口
- go语言使用go-sciter创建桌面应用(三) 事件处理,函数与方法定义,go与tiscript之间相互调用
- Go语言之函数方法
- Go语言中的方法、接口和嵌入类型详解
- Go语言:同个包下不同文件不能互相调用函数