登录
首页 >  Golang >  Go问答

遍历Go中结构体的第N个字段

来源:stackoverflow

时间:2024-03-07 11:09:27 301浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《遍历Go中结构体的第N个字段》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

go 中迭代结构体的字段

我已阅读上面的线程,现在我尝试通过一次处理多个项目来扩展它

package main

import (
    "fmt"
    "reflect"
)

type BaseStats struct {
    value1       int
    value2       byte
    value3       int
    value4       byte
}

func StatsCreate(stats BaseStats) {
    v := reflect.ValueOf(stats)
    val := make([]interface{}, v.NumField())
    for i := 0; i< v.NumField(); i+=2 {
        val[i+0] = v.Field(i+0).Interface().(int)
        val[i+1] = v.Field(i+1).Interface().(byte)
        fmt.Printf("%v %v", val[i+0], val[i+1])
    }
}
func main() {
    StatsCreate(BaseStats{20, '%', 400, '$'})
}

我之前遇到的错误:panic:reflect.value.interface:无法返回从未导出的字段或方法获得的值


解决方案


Go 要求您输入您希望在包外部使用的任何变量或函数的首字母(也称为 EXPORTED)。因为您试图将变量传递给另一个包,在本例中为 reflect 包,但它们不可导出。作为最佳实践,所有结构体字段名称都大写是很常见的。

大写的 >exported 范例是我不喜欢该语言的少数几个方面之一,但事实就是如此。

今天关于《遍历Go中结构体的第N个字段》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>