Go检查结构体中是否存在某个字段及创建结构体切片或映射

 更新时间:2024年01月11日 16:24:11   作者:zhe.ink 哲京  
这篇文章主要为大家介绍了Go检查结构体中是否存在某个字段及创建结构体切片或映射实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

验证字段Z是否存在于结构类型Test中

下面的代码片段声明了具有字段A、B和C的结构类型Test。我们需要验证字段Z是否存在于结构类型Test中。

示例代码:

package main
import (
	"log"
	"reflect"
)
func main() {
	type test struct {
		A bool
		B bool
		C bool
	}
	v := new(test)
	metaValue := reflect.ValueOf(v).Elem()
	for _, name := range []string{"A", "C", "Z"} {
		field := metaValue.FieldByName(name)
		if field == (reflect.Value{}) {
			log.Printf("Field %s not exist in struct", name)
		}
	}
}

输出:

2009/11/10 23:00:00 Field Z not exist in struct

创建结构体切片

示例代码:

package main
import (
	"fmt"
)
type Widget struct {
	id    int
	attrs []string
}
func main() {
	widgets := []Widget{
		Widget{
			id:    10,
			attrs: []string{"blah", "foo"},
		},
		Widget{
			id:    11,
			attrs: []string{"foo", "bar"},
		},
		Widget{
			id:    12,
			attrs: []string{"xyz"},
		},
	}
	for _, j := range widgets {
		fmt.Printf("%d ", j.id)
		for _, y := range j.attrs {
			fmt.Printf(" %s ", y)
		}
		fmt.Println()
	}
}

输出:

10  blah  foo 
11  foo  bar
12  xyz

创建结构体映射

示例代码:

package main

import "fmt"

type Emp struct {
	x int
	y []string
}

func main() {
	var list = map[string]*Emp{"e1": {1001, []string{"John", "US"}}}

	e := new(Emp)
	e.x = 1002
	e.y = []string{"Rock", "UK"}

	list["e2"] = e

	fmt.Println(list["e1"])
	fmt.Println(list["e2"])
}

输出:

&{1001 [John US]}
&{1002 [Rock UK]}

以上就是Go检查结构体中是否存在某个字段及创建结构体切片或映射的详细内容,更多关于Go结构体检查创建的资料请关注脚本之家其它相关文章!

相关文章

  • golang文件内容覆盖问题的分析及解决

    golang文件内容覆盖问题的分析及解决

    通过golang读取数据库站点映射配置,生成nginx conf文件,并检查和重启nginx服务,已达到站点自动化部署目的,当目标文件中内容很长,而写入的内容很短时,目标文件内容无法完全覆盖,本文给大家介绍了解决方法,需要的朋友可以参考下
    2024-01-01
  • 手把手教你用VS code快速搭建一个Golang项目

    手把手教你用VS code快速搭建一个Golang项目

    Go语言是采用UTF8编码的,理论上使用任何文本编辑器都能做Go语言开发,下面这篇文章主要给大家介绍了关于使用VS code快速搭建一个Golang项目的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • golang实现unicode转换为字符串string的方法

    golang实现unicode转换为字符串string的方法

    这篇文章主要介绍了golang实现unicode转换为字符串string的方法,实例分析了Go语言编码转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • golang cache带索引超时缓存库实战示例

    golang cache带索引超时缓存库实战示例

    这篇文章主要为大家介绍了golang cache带索引超时缓存库实战示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Kotlin编程基础语法编码规范

    Kotlin编程基础语法编码规范

    这篇文章主要为大家介绍了Kotlin编程条件控制示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • golang json性能分析详解

    golang json性能分析详解

    json格式可以算我们日常最常用的序列化格式之一了,Go语言作为一个由Google开发,号称互联网的C语言的语言,自然也对JSON格式支持很好。下面这篇文章主要给大家详细分析介绍了golang json性能的相关资料,需要的朋友可以参考下。
    2018-02-02
  • Go语言JSON解析器gjson使用方法详解

    Go语言JSON解析器gjson使用方法详解

    这篇文章主要介绍了Go语言json解析框架与gjson,JSON 解析是我们不可避免的常见问题,在Go语言中,我们可以借助gjson库来方便的进行json属性的提取与解析,需要的朋友可以参考一下
    2022-12-12
  • Go中的错误和异常处理最佳实践方法

    Go中的错误和异常处理最佳实践方法

    这篇文章主要介绍了Go中的错误和异常处理最佳实践方法,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • golang pprof 监控goroutine thread统计原理详解

    golang pprof 监控goroutine thread统计原理详解

    这篇文章主要为大家介绍了golang pprof 监控goroutine thread统计原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Go单例模式与Once源码实现

    Go单例模式与Once源码实现

    这篇文章主要介绍了Go单例模式与Once源码实现,本文结合示例代码给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12

最新评论