您的位置:首页 > 编程语言 > Go语言

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")
}
}


接口转换

接口使用注意事项
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: