这篇文章主要介绍了Go语言如何判断结构体是否存在某方法的免费云主机域名相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇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")
关于“Go语言如何判断结构体是否存在某方法”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Go语言如何判断结构体是否存在某方法”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。
这篇文章主要介绍“jquery-validate怎么用”,在日常操作中,相信很多人在jquery-validate怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jquery-validate怎么用”的疑惑有所帮助!接下来,…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。