登录
首页 >  Golang >  Go问答

如何选择结构体中特定字段进行操作?

来源:stackoverflow

时间:2024-02-26 16:30:23 470浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《如何选择结构体中特定字段进行操作?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我有一个由多个相同类型的字段组成的结构。

type test struct{
       a int
       b int
       c int
}

我想应用一个对三个字段执行相同操作的函数,但我每次只想对一个字段执行此操作。

function something (toto test, cond int) {
    if (cond == 1){
        // then we will use A for the rest of the function
    }else if (cond == 2) {
        // then we use B etc....
    } ... 

    for mail, v := range bdd {
        if _, ok := someMap[v.A]; !ok {       // use v.A or V.B or V.C     
            delete(bdd, mail)
        }
        ...
    }

    ...
}

这个函数真的很长,而且我很困扰的是,仅仅为了一行发生变化的代码就重复了 3 次。 我尝试使用反射包。我认为这样做是一个危险的想法。


解决方案


在您的情况下,我会使用映射而不是结构,但如果确实需要结构,您可以使用反射包。

v := reflect.ValueOf(x)

for i := 0; i < v.NumField(); i++ {
    fmt.Printf("%v", v.Field(i).Interface())
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

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