当前位置:网站首页>Go从入门到实战——接口(笔记)

Go从入门到实战——接口(笔记)

2022-06-27 19:22:00 积淀 ytu

Java接口

在这里插入图片描述

Go接口

在这里插入图片描述

type Mover interface {
    
	move()
}

type dog struct {
    }

func (d dog) move() {
    
	fmt.Println("狗会动")
}

func main() {
    
	var x Mover
	var wangcai = dog{
    } // 旺财是dog类型
	x = wangcai         // x可以接收dog类型
	var fugui = &dog{
    }  // 富贵是*dog类型
	x = fugui           // x可以接收*dog类型
	x.move()
}

从上面的代码中我们可以发现,使用值接收者实现接口之后,不管是dog结构体还是结构体指针*dog类型的变量都可以赋值给该接口变量。因为Go语言中有对指针类型变量求值的语法糖,dog指针 fugui 内部会自动求值*fugui

func (d *dog) move() {
    
	fmt.Println("狗会动")
}
func main() {
    
	var x Mover
	var wangcai = dog{
    } // 旺财是dog类型
	x = wangcai         // x不可以接收dog类型
	var fugui = &dog{
    }  // 富贵是*dog类型
	x = fugui           // x可以接收*dog类型
}

此时实现Mover接口的是*dog类型,所以不能给x传入dog类型的wangcai,此时x只能存储*dog类型的值。
在这里插入图片描述

接口变量

在这里插入图片描述

自定义类型

在这里插入图片描述

原网站

版权声明
本文为[积淀 ytu]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_42094659/article/details/107686163