go switch 与 interface

go switch 与 interface

前言

github.com/google/cel-go/common/types/ref

go 复制代码
type Val interface {
	// ConvertToNative converts the Value to a native Go struct according to the
	// reflected type description, or error if the conversion is not feasible.
	ConvertToNative(typeDesc reflect.Type) (interface{}, error)

	// ConvertToType supports type conversions between value types supported by
	// the expression language.
	ConvertToType(typeValue Type) Val

	// Equal returns true if the `other` value has the same type and content as
	// the implementing struct.
	Equal(other Val) Val

	// Type returns the TypeValue of the value.
	Type() Type

	// Value returns the raw value of the instance which may not be directly
	// compatible with the expression language types.
	Value() interface{}
}

当我们实现了一个interface时,使用swtich case去判断,会命中哪条结果?

go 复制代码
switch i := v.(type) {
	case ref.Val:
		return resolveType(i.Value())
	case *CustomType:
		return resolveType(i.Value())
	default:
		
	}

经过测试发现,谁的case靠前,会命中谁,哪怕CustomType有一些私有方法

后面空了看看switch 底层实现。。

相关推荐
b***666111 小时前
【golang学习之旅】使用VScode安装配置Go开发环境
vscode·学习·golang
2301_7951672012 小时前
Python 高手编程系列八:缓存
开发语言·python·缓存
IguoChan12 小时前
D2L(1) — 线性回归
后端
8***293112 小时前
Go基础之环境搭建
开发语言·后端·golang
梅花1412 小时前
基于Django房屋租赁系统
后端·python·django·bootstrap·django项目·django网站
提笔了无痕12 小时前
go web开发表单知识及表单处理详解
前端·后端·golang·web
qq_124987075312 小时前
基于SpringBoot技术的企业请假审批管理系统的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·信息可视化·毕业设计
Yue丶越12 小时前
【C语言】自定义类型:联合体与枚举
c语言·开发语言
小哀212 小时前
🌸 入职写了一个月全栈next.js 感想
前端·后端·ai编程
ziwu12 小时前
【民族服饰识别系统】Python+TensorFlow+Vue3+Django+人工智能+深度学习+卷积网络+resnet50算法
人工智能·后端·图像识别