返回顶部
首页 > 资讯 > 后端开发 > GO >在 Go 中通过字段符号查找标签
  • 428
分享到

在 Go 中通过字段符号查找标签

2024-04-05 00:04:59 428人浏览 独家记忆
摘要

学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《在 Go 中通过字段符号查找标签》,以下内容主要包含等知识点,如果你正在学习或准备学习golang,就都不要错过本文啦~让我们一起来看看

学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《在 Go 中通过字段符号查找标签》,以下内容主要包含等知识点,如果你正在学习或准备学习golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

给定一个包含字段的结构,我想以符号方式查找特定字段的标记值(不提供字符串形式的字段名称)。

type MyStruct struct {
    Foo string `tag:"val"`
}
entity := MyStruct{}
tagVal := getTag(&entity.Foo) // the function would return "val" for Foo field

我想实现一个 gettag 函数,该函数将返回给定字段的标记值。


解决方案


指向字段值的指针不包含有关所有者结构的任何信息,这是一种不同的间接方式,因此仅具有指针字段值不足以解决问题。

一种解决方案是使用指向所有者结构的指针以及指向该结构中字段的指针,通过反射迭代该结构值的字段,直到迭代字段的地址与给定的字段值指针匹配。

https://play.golang.org/p/kaPQ9HF9wAK

package main

import (
    "fmt"
    "reflect"
)

func main() {
    type MyStruct struct {
        Foo string `tag:"val"`
    }
    entity := MyStruct{}
    tagVal := getTag(&entity, &entity.Foo)
    fmt.Println(tagVal) // val
}

func getTag(structPtr, fieldPtr interface{}) string {
    sf, ok := structFieldByValPtr(structPtr, fieldPtr)
    if !ok {
        return ""
    }
    return sf.Tag.Get("tag")
}

func structFieldByValPtr(structPtr, fieldPtr interface{}) (reflect.StructField, bool) {
    v := reflect.Indirect(reflect.ValueOf(structPtr))
    t := v.Type()

    for i := 0; i < v.NumField(); i++ {
        fv := v.Field(i)
        ft := t.Field(i)

        if fv.Addr().Interface() == fieldPtr {
            return ft, true
        }

        if ft.Anonymous {
            sf, ok := structFieldByValPtr(fv.Addr().Interface(), fieldPtr)
            if ok {
                return sf, true
            }
        }
    }

    return reflect.StructField{}, false
}

好了,本文到此结束,带大家了解了《在 Go 中通过字段符号查找标签》,希望本文对你有所帮助!关注编程网公众号,给大家分享更多Golang知识!

您可能感兴趣的文档:

--结束END--

本文标题: 在 Go 中通过字段符号查找标签

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

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

猜你喜欢
  • 在 Go 中通过字段符号查找标签
    学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《在 Go 中通过字段符号查找标签》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看...
    99+
    2024-04-05
  • 按标签查找字段
    各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题是《按标签查找字段》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评...
    99+
    2024-04-04
  • 在 Go 中解组编号的 XML 标签
    php小编香蕉为您介绍在Go语言中解组编号的XML标签的方法。Go语言提供了xml.Unmarshal函数,它可以将XML数据解组为Go结构体。在解组时,我们可以使用标签来指定XML元...
    99+
    2024-02-10
    go语言
  • python 实现查找某个字符在字符串中
    把字符串'aenabsascd'中的字符出现的次数统计出来,并以字典形式输出方法一: 1 def count_str(str): 2 dic={} 3 for i in str: 4 dic[i]=str...
    99+
    2023-01-30
    字符串 字符 python
  • ubuntu中怎么在终端中查找字符串
    ubuntu中在终端中查找字符串的方法:例如找到具有"main"这个字符串的文件的位置,命令:grep main *.*若要找的字符串在当前文件夹的子文件夹下,并且有多个子文件夹的查找命令如:grep -r main *.c//不分大小写查...
    99+
    2024-04-02
  • PHP如何在字符串中查找一组字符的任何一个字符
    这篇文章将为大家详细讲解有关PHP如何在字符串中查找一组字符的任何一个字符,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP 中在字符串中查找一组字符的任何一个字符 在 PHP 中,可以使用正则表达式在...
    99+
    2024-04-02
  • 如何在Golang中通过字符串匹配实现模糊查询
    在数据处理中,模糊查询是一项非常实用的技能。在 Golang 中,通过使用正则表达式或者字符串匹配等方法可以实现模糊查询。一般情况下,字符串匹配方法更为简单,且对于一般的模糊查询已经可以满足要求。下面我们来介绍一下如何在 Golang 中通...
    99+
    2023-05-14
  • sqlserver查找括号()中字符串内容的方法实现
    目录PATINDEX()函数charindex()函数SUBSTRING函数假如有一张学生表,表中学生姓名是学生的中文名(英文名),如何获取括号中的英文名称。 需要用到两个SQL函数的配合,一个是PATINDEX()函...
    99+
    2023-05-16
    sqlserver查找括号中字符串 sqlserver查找字符串
  • mysql通过 表名、列名、字段名、注释 找到所在库 或者所在表
    最近在开发过程中,由于涉及的库太多,有时候知道关联的列名 或者表名,找不到源库了。所以整理了下面的文章,希望对你有帮助。 1、通过表名找到所在库 有一张 item 表,但是忘记了它存在哪个数据库中,可...
    99+
    2023-09-05
    mysql 数据库 sql
  • 通过sql语句查询出某个字段在数据库中的某个表
    新入职的小伙伴,肯定还没熟悉数据库中表于表的关系以及表中的字段的含义是什么,就需要进行需求开发,导致会出现对某个字段在哪张表里面都分辨不清,不过不要怕,可以利用已下sql语句快速找到。(要注意的是,此方法可能不适用于所有类型的数据库系统,但...
    99+
    2023-09-05
    数据库 sql mysql
  • Sql 中怎么批量查看字符所在的表及字段
    这篇文章给大家介绍Sql 中怎么批量查看字符所在的表及字段,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。代码如下: declare @str varchar(100) set...
    99+
    2024-04-02
  • 怎么在Oracle中通过一个关键字匹配多个字段
    怎么在Oracle中通过一个关键字匹配多个字段?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。分析:一般情况下,我们的一个输入框...
    99+
    2024-04-02
  • 如何通过 gin-gonic 读取 go 中的帖子字符串
    在Go语言中,使用gin-gonic框架读取帖子字符串是一项常见的任务。通过gin-gonic,我们可以轻松地处理HTTP请求和响应,并从中提取所需的数据。本文将向您介绍如何使用gin...
    99+
    2024-02-09
    go语言
  • 如何在Go语言中检查字符是否存在?
    如何在Go语言中检查字符是否存在? 在Go语言中,想要检查一个字符是否存在在一个字符串中是一个常见的需求。有时候我们需要确保某个字符在字符串中存在,才能继续进行后续的处理。在本文中,我...
    99+
    2024-03-12
    检查字符存在 go语言字符检查 字符存在检查 go语言
  • PHP如何查找指定字符在字符串中的最后一次出现
    这篇文章将为大家详细讲解有关PHP如何查找指定字符在字符串中的最后一次出现,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 使用 strrpos() 函数 strrpos() 函数用于查找指定字符或子字符...
    99+
    2024-04-02
  • 在Java中字符串是通过引用传递的吗
    本篇内容介绍了“在Java中字符串是通过引用传递的吗”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 一...
    99+
    2024-04-02
  • 如何在 Go 中使用正则表达式查找 HTML 标记?
    在 go 中使用正则表达式查找 html 标记:安装 regexp 包。使用 regexp.matchstring 函数,传入正则表达式字符串和要搜索的字符串。如果匹配成功,该函数将返回...
    99+
    2024-05-15
    html 正则表达式 git
  • Android编程实现从字符串中查找电话号码的方法
    本文实例讲述了Android编程实现从字符串中查找电话号码的方法。分享给大家供大家参考,具体如下: private List<String> getNumbe...
    99+
    2022-06-06
    电话 方法 字符串 字符 Android
  • 如何通过Javascript在Popover内容引导程序中添加HTML标签
    要在Popover内容引导程序中添加HTML标签,可以使用JavaScript的innerHTML属性来实现。首先,找到Popove...
    99+
    2023-09-16
    Javascript
  • Node.js实现在目录中查找某个字符串及所在文件
    需求如下: 整个目录下大概有40几M,文件无数,由于时间久了, 记不清那个字符串具体在哪个文件,于是。强大,亮瞎双眼的Node.js闪亮登场。 windows下安装Node.js和安装普通软件毫无差别,装完...
    99+
    2022-06-04
    字符串 文件 目录中
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作