这篇“Golang怎么判断结构体是否存在某方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Golang怎么判断结构体是否存在某方法”文章吧。go 判断结构体是否有某个方法go 有时需要判断某个结构体是不是有某个方法,但是可能突然就一脸茫然,go 也可以像 php 那样判断是的,虽然 go 没有提供现成的方法,但是可以用已有的逻辑来封装实现。目前能用的方式有两种,一种是知道完整的方法可以用接口断言方式判断,第二种就是用反射来完成判断。准备需要判断的结构体:
typeRefDatastruct{} func(this*RefData)Show(dataany,namestring)string{ data2:=data.(string)+"==="+name returndata2 }
接口断言判断:
refDataExists:=false varrefDataObany=&RefData{} if_,ok:=refDataOb.(interface{ Show(any,string)string });ok{ refDataExists=true }
反射判断:
import( "reflect" ) //判断结构体方法是否存在 funcMethodExists(inany,methodstring)bool{ ifmethod==""{ returnfalse } p:=reflect.TypeOf(in) ifp.Kind()==reflect.Pointer免费云主机域名{ p=p.Elem() } //不是结构体时 ifp.Kind()!=reflect.Struct{ returnfalse } object:=reflect.ValueOf(in) //获取到方法 newMethod:=object.MethodByName(method) if!newMethod.IsValid(){ returnfalse } returntrue } //使用 refDataExists:=MethodExists(&RefData{},"Show")
接口断言判断:
反射判断:
以上就是关于“Golang怎么判断结构体是否存在某方法”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注百云主机行业资讯频道。
本篇内容介绍了“Vue.js怎么实现文件上传压缩优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!两种方法 :第1种是借助canvas的封装的文件压缩上传第2种…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。