首页 > 编程语言 >《零基础Go语言算法实战》【题目 2-18】获取结构体中字段的 tag 值

《零基础Go语言算法实战》【题目 2-18】获取结构体中字段的 tag 值

时间:2025-01-13 19:28:10浏览次数:3  
标签:Tag 体中字 18 reflect json tag Go 结构

《零基础Go语言算法实战》

【题目 2-18】获取结构体中字段的 tag 值

在 Go 语言中,使用 json 包时,在结构体中的字段前会加上 tag,有没有什么办法可以获

取到这个 tag 的内容呢?举例说明。

【解答】

tag 信息可以通过 reflect 包内的方法获取,下面通过一个例子来加深理解:

package main

import (

 "fmt"

 "reflect"

)

type Json struct {

 tag string `json:"Tag"`

}

func printTag(input interface{}) {

 t := reflect.TypeOf(input).Elem()

 for i := 0; i < t.NumField(); i++ {

 fmt.Printf(" 结构体字段 %v 对应的 json tag 是 %v\n", t.Field(i).Name,

 t.Field(i).Tag.Get("json"))

 }

}

func main() {

 j := Json{

 tag: "test",

 }

 printTag(&j)

}

//$ go run interview1-42.go 

// 结构体字段 tag 对应的 json tag 是 Tag

68cef3b2c7c14f7a9888b84d042ed56c.png

 

标签:Tag,体中字,18,reflect,json,tag,Go,结构
From: https://blog.csdn.net/qq_39728668/article/details/145108946

相关文章

  • 【复现】基于自适应遗传算法的分布式电源优化配置[IEEE33、IEEE118节点](Matlab代码实
     ......
  • Python 魔法学院 - 第18篇:Python 多线程 ⭐⭐⭐
    目录引言1.多线程编程基础1.1什么是多线程?1.2为什么需要多线程?1.3Python中的多线程模块2.创建和启动线程2.1使用`threading.Thread`创建线程2.2使用`target`参数创建线程3.线程同步3.1为什么需要线程同步?3.2使用`Lock`实现线程同步3.3使用`RLock`......
  • LeetCode热题100中 35. 46. 70. 73. 118.
    35.搜索插入位置题目描述:实现思路:        这里主要就是二分查找,二分查找要注意对边界值的处理,l是数组的第一位,r是数组的最后一位,l<=r我们就返回l,因为我们的判断是nums[mid]<target 取的是mid的左区间已经不包含mid了,所以是 l=mid+1。代码:var......
  • 【IPQ5018】IPQ5018 5G 获取支持信道列表并格式化输出字符串
     IPQ5018    IPQ5018isahighlyintegrated802.11axWi-Fi/Bluetooth5.2system-on-chip(SoC)designedandbuiltforhigh-performance,powerefficient,andcost-effectivewirelessnetworkingapplicationsincludinghomerouters,meshnodes,andgate......
  • CS61B srping 2018 disc04 https://sp18.datastructur.es/
    extends(扩展)和override(重写)extends关系导致的类型,子类一定是父类,父类一定不是子类。就赋值而言,父类a=子类b是ok的;反过来子类x=父类y;是不ok的,也就是说赋值时,类型层级上,右边一定是小于(低于)左边的。给定Animal类,填写Cat类的定义,以便在greet()被调用时,......
  • 关于此题[ABC350E] Toward 0和[ABC188F] +1-1x2记忆化搜索的一些总结
    传送门1传送门2这两道题都有个特性,那就是数据范围到了\(10^{18}\),这会让我们想用记忆化搜索或者期望DP的想法望而却退但是实际上我们可以用map。有人会说,用map那时间上貌似也过不去啊!但是我们发现这两道题当中,我们可以进行的操作都有除法操作,这就有点像势能线段树,时间复杂度实......
  • CF718E Matvey's Birthday
    Matvey'sBirthday题目链接。Problem给定一个仅包含a~h的字符串(八个字符)。有一个\(n\)个结点的无向图,编号为\(0\)到\(n−1\)。结点\(i\)与结点\(j\)间有边相连当且仅当\(|i-j|=1\)或\(S_i=S_j\)。求这个无向图的直径和有多少对点间的最短距离与直径相同。数据......
  • 《Linux设备驱动开发详解(第3版)》 第18章 Linux驱动移植
    18.1驱动移植概述驱动移植是指将为某个特定硬件平台或内核版本编写的设备驱动程序,经过修改和适配,使其能够在另一个硬件平台或内核版本上正常运行。这一过程需要深入了解目标平台的硬件特性、内核架构以及驱动接口的差异。驱动移植通常涉及到硬件相关代码的调整、内核接口......
  • 洛谷P2181 对角线
    对于一个 ......
  • 随笔:我为什么没有把《P5369 [PKUSC2018] 最大前缀和》做出来
    这是一篇随笔(绝对不是某CC风格的随笔)特别提醒:某W同学,再被【数据删除】要求写【数据删除】时你可以看一看这个大纲。我在干什么我在考【数据删除】时,开完题目后,我断定我就要解决这一道题。看见\(20\)这个小范围以后我就想起上一把【数据删除】的T【数据删除】。我就想DP......