我有以下代码:

type DisplayObject struct {
    ID      string `json:"id,omitempty" bson:"id"`
    URI     string `json:"uri,omitempty" bson:"uri"`
    Display string `json:"display,omitempty" bson:"display"`
}

if DisplayObject.ID != "" {
    // do something
}

if DisplayObject.URI != "" {
    // do something
}

if DisplayObject.Display != "" {
    // do something
}

用JavaScript我会做
for (var key in DisplayObject) {
  if (DisplayObject.hasOwnProperty(key)) {
    // do something
  }
}

如何在go中遍历对象来实现此功能?

最佳答案

您可以使用反射来完成类似的工作:

package main

import (
    "fmt"
    "reflect"
)

type DisplayObject struct {
    ID      string `json:"id,omitempty" bson:"id"`
    URI     string `json:"uri,omitempty" bson:"uri"`
    Display string `json:"display,omitempty" bson:"display"`
}

func main() {
    displayObj := &DisplayObject{ID: "foo"}
    s := reflect.ValueOf(displayObj).Elem()
    for i := 0; i < s.NumField(); i++ {
        fieldName := s.Type().Field(i).Name
        fieldValue := s.Field(i).String()
        fmt.Printf("%s: %s\n", fieldName, fieldValue)
        // do something with the field data
    }
}

关于go - 一次检查golang中的所有数据键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33761640/

10-15 23:56
查看更多