Go 断言

在 Go 语言中,断言(Assertion)是一种类型转换的方式,它用于将一个接口类型转换为其他类型。

类型断言

在 Go 语言中,类型断言是将一个接口类型转换为其他类型的方式。类型断言的语法如下:

value, ok := interfaceValue.(interfaceType)

其中,interfaceValue 表示接口值,interfaceType 表示接口类型,value 表示类型转换后的值,ok 表示类型转换是否成功。

之前实例如下

package main

import "fmt"

// 接口  interface
func main() {
	c := Chinese{}  //创建一个中国人实例
	u := American{} //创建一个美国人实例
	greet(c)        //中国人打招呼
	greet(u)        //美国人打招呼
}

// 接收具备SayHello接口能力的变量
func greet(s SayHello) {
	s.sayHello()
	//ch, flag := s.(Chinese) //判断s是否可以转换成功
	if ch, flag := s.(Chinese); flag {
		ch.niuYangGe()
	} else {
		fmt.Println("美国人不会扭秧歌")
	}
}

// 定义接口
type SayHello interface {
	sayHello()
}

// 接口实现:定义一个结构体【中国人】
type Chinese struct {
}

// 中国人的具体实现
func (c Chinese) sayHello() {
	fmt.Println("你好")
}
func (c Chinese) niuYangGe() {
	fmt.Println("扭秧歌")
}

// 接口实现:定义一个结构体【美国人】
type American struct {
}

// 美国人的具体实现
func (u American) sayHello() {
	fmt.Println("Hi")
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值