Monkey

个人站

The master has failed more times than the beginner has tried


GO 接口 duck typing的概念

  • duck typing

像鸭子走路,像鸭子叫,那么就是鸭子

  • 描述事物的外部行为而非内部结构
  • 严格说 GO 语言属于结构化类型系统,和具体结构无关。类似 duck typing
  • go 语言的接口是由使用者定义

接口的定义与实现

  • 接口的实现时隐式的,只要实现接口中的方法
/**
    main.go
*/
package main

import (
	"fmt"
	"learnGo/retriever/mock"
)

type Retriever interface {
	Get(url string) string
}

func download(r Retriever) string {
	return r.Get("http://www.baidu.com")
}

func main()  {
	var r Retriever
	r = mock.Retriever{"this is a fake baidu.com"}
	fmt.Println(download(r))
}

/**
    mock.go
*/
package mock

type Retriever struct {
	Contents string
}

func (r Retriever) Get (url string) string  {
	return r.Contents
}

接口的值类型

  • 接口变量自带指针
  • 接口变量同样采用值传递,几乎不需要使用接口的指针
  • 指针接收者实现只能以指针方式使用,值接收者都可

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦