我是Golang的新手,并使用Go library处理来自Github的一些webhook事件。
我可以访问此处定义的部署Payload
结构:
https://github.com/go-playground/webhooks/blob/v3/github/payload.go#L384
该库解析webhook JSON有效负载并构造它。这是一个自定义字段,即它是一个hashmap / dictionary,其字段可以由客户端自定义。
所以我认为它被库定义为一个空结构。如何从此结构中提取名为“foo”的特定字段?
答案 0 :(得分:0)
现在对于您可以实现的目标存在某些限制,但通过使用反射包,您可以轻松检查您的对象是否为空:
package main
import (
"fmt"
"reflect"
"strconv"
)
type emptiness struct {}
type thing struct {
stuff string
}
func main() {
e := emptiness{}
t := thing{
stuff: "present",
}
fmt.Println(t.stuff)
v := reflect.ValueOf(t)
fmt.Println(strconv.Itoa(v.NumField()))
v = reflect.ValueOf(e)
fmt.Println(strconv.Itoa(v.NumField()))
if v.NumField() == 0 {
// handle your empty object accordingly
}
}
修改:忘记添加runnable example's link。你可以玩它并使用反射获得更多信息,但如果你只是想检查它是否为空,这将有效。