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

server/2025/1/15 13:14:27/

《零基础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

 


http://www.ppmy.cn/server/158564.html

相关文章

【Matlab 六自由度机器人】机械臂轨迹规划方法总结

机械臂轨迹规划主要方法 前言1. 多项式插值类方法1.1 三次多项式插值数学表达式边界条件求解过程 1.2 五次多项式插值数学表达式边界条件求解过程 2. 基于速度轮廓的方法2.1 梯形速度规划梯形速度规划数学表达式加速段 t ∈ [ 0 , t 1 ] t \in [0,t_1] t∈[0,t1​]&#xff1a…

【练习】力扣热题100 有效的括号

题目 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括…

K8s数据存储之详解(Detailed Explanation of K8s Data Storage)

K8s数据存储相关概念详解&#xff08;临时存储&#xff0c;节点存储&#xff0c;网络存储&#xff0c;PV/PVC&#xff09; 本篇文章分享一下存储卷和数据持久化的相关概念&#xff1a; 存储卷概述 临时存储卷&#xff08;Ephemeral Volumes&#xff09; 节点存储卷&#xff…

SSE部署后无法连接问题解决

1. 问题现象 通过域名访问 https://api-uat.sfxs.com/sse/subscribe?tokenBearer%20eyJUxMiJ9.eyJhY2NvdW50IjoiYWRtaWZ0NvZGUiOiIwMDEiLCJyb2xidXNlcm5hbWUiOiLotoXnuqfnrqHnkIblkZgifQ.tlz9N61Y4 一直无法正常连接 2. 问题解决 nginx.conf进行配置 server {location /ss…

面向科研狗的服务器运维——服务器搭建维护到排障

系列文章目录 写在前面&#xff1a;某高校的苦逼计算机博士生。因为之前在高性能计算国家重点实验室做工程师&#xff0c;也负责了当时的超算节点的部分运维工作&#xff0c;所以现在也承担了组里的服务器运维工作。 文章目录 系列文章目录前言一、pandas是什么&#xff1f;…

16. C语言 字符串详解

本章目录: 前言C 字符串的基础概念字符串的定义字符串的内存表示 常见的字符串操作函数示例代码 深入探讨字符串长度计算strlen 与 sizeof 的区别 字符串操作的注意事项**1. 字符数组的大小**2. 字符数组和字符指针的区别3. 使用安全函数 字符串的遍历与格式化输出**遍历字符串…

LabVIEW水位监控系统

LabVIEW开发智能水位监控系统通过集成先进的传感技术与控制算法&#xff0c;为工业液体存储提供精确的水位调控&#xff0c;保证了生产过程的连续性与安全性。 项目背景 在化工和饮料生产等行业中&#xff0c;水位控制的准确性对保证生产安全和提高产品质量至关重要。传统的水…

初识C++(二)

六、引用 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同一块内存空间。 通俗地讲&#xff0c;可以理解为一个人能够拥有多个称呼&#xff0c;这些所有的称呼都是表示这一…