go语言[7] 函数,方法和接口

函数

  • 函数的定义与使用
 参数,返回值,多个返回值
  • 不定长变参
 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")
	}
}




接口转换
接口使用注意事项



猜你喜欢

转载自blog.csdn.net/wangzhanzheng/article/details/79241774
今日推荐