广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Golang判断结构体是否存在某方法的两种方式(附代码示例)
  • 535
分享到

Golang判断结构体是否存在某方法的两种方式(附代码示例)

Golang 2023-05-14 19:05:36 535人浏览 独家记忆
摘要

本篇文章带大家学习一下golang,聊聊Golang怎么判断结构体是不是有某个方法,希望对大家有所帮助。go 判断结构体是否有某个方法go 有时需要判断某个结构体是不是有某个方法,但是可能突然就一脸茫然,go 也可以像 PHP 那样判断是的

本篇文章带大家学习一下golang,聊聊Golang怎么判断结构体是不是有某个方法,希望对大家有所帮助。

Golang判断结构体是否存在某方法的两种方式(附代码示例)

go 判断结构体是否有某个方法

go 有时需要判断某个结构体是不是有某个方法,但是可能突然就一脸茫然,go 也可以像 PHP 那样判断

是的,虽然 go 没有提供现成的方法,但是可以用已有的逻辑来封装实现。【推荐学习:go视频教程

目前能用的方式有两种,一种是知道完整的方法可以用接口断言方式判断,第二种就是用反射来完成判断。

准备需要判断的结构体:

type  RefData  struct  {}

func  (this  *RefData)  Show(data  any,  name  string)  string  {
  data2  :=  data.(string)  +  "==="  +  name

  return  data2
}

接口断言判断:

refDataExists := false
var refDataOb any = &RefData{}
if _, ok := refDataOb.(interface {
    Show(any, string) string
}); ok {
    refDataExists = true
}

反射判断:

import(
  "reflect"
)
// 判断结构体方法是否存在
func MethodExists(in any, method string) bool {
    if method == "" {
        return false
    }
    p := reflect.TypeOf(in)
    if p.Kind() == reflect.Pointer {
        p = p.Elem()
    }
    // 不是结构体时
    if p.Kind() != reflect.Struct {
        return false
    }
    object := reflect.ValueOf(in)
    // 获取到方法
    newMethod := object.MethodByName(method)
    if !newMethod.IsValid() {
        return false
    }
    return true
}
// 使用
refDataExists := MethodExists(&RefData{},  "Show")

以上就是Golang判断结构体是否存在某方法的两种方式(附代码示例)的详细内容,更多请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: Golang判断结构体是否存在某方法的两种方式(附代码示例)

本文链接: https://www.lsjlt.com/news/203371.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Golang判断结构体是否存在某方法的两种方式(附代码示例)
    本篇文章带大家学习一下Golang,聊聊Golang怎么判断结构体是不是有某个方法,希望对大家有所帮助。go 判断结构体是否有某个方法go 有时需要判断某个结构体是不是有某个方法,但是可能突然就一脸茫然,go 也可以像 php 那样判断是的...
    99+
    2023-05-14
    Golang
  • Golang怎么判断结构体是否存在某方法
    这篇“Golang怎么判断结构体是否存在某方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Golang怎么判断结构体是否存...
    99+
    2023-07-04
  • Go语言怎么判断结构体是否存在某方法?两种方式介绍
    Go语言怎么判断结构体是否存在某方法?下面本篇文章给大家介绍一下Golang判断结构体是否存在某方法的两种方式(附代码示例),希望对大家有所帮助!go 有时需要判断某个结构体是不是有某个方法,但是可能突然就一脸茫然,go 也可以像 php ...
    99+
    2023-05-14
    Golang go语言
  • Go语言如何判断结构体是否存在某方法
    这篇文章主要介绍了Go语言如何判断结构体是否存在某方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言如何判断结构体是否存在某方法文章都会有所收获,下面我们一起来看看吧。go 有时需要判断某个结构体是不是...
    99+
    2023-07-05
  • java判断是否存在文件的方法介绍(附代码)
    使用 File 类的 file.exists() 方法来检测文件是否存在:(推荐:java视频教程)import java.io.File; public class Main { public static void main...
    99+
    2018-06-18
    java
  • java中判断文件文件夹是否存在的方法(附代码)
    1、判断文件夹是否存在,不存在则创建:(java相关视频教程推荐:java视频教程)File folder = new File("d:\test1\test2"); if (!folder.exists() && !folder.isDi...
    99+
    2021-12-20
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作