我有一个结构,我将所有小时和分钟存储到mongodb中。在这种情况下,当我收到修改值的请求时,我将小时和分钟作为字符串。有没有办法从输入的字符串中找到字段名称
你可以看到它here
package main
import "fmt"
type Min struct {
v01 int `bson:"01",json:"01"`
v02 int `bson:"02",json:"02"`
}
type Hour struct {
v01 Min `bson:"01",json:"01"`
v02 Min `bson:"02",json:"02"`
}
func main() {
fmt.Println("Hello, playground")
var h Hour
h.v01.v01 = 1
h.v02.v01 = 2
fmt.Println(h)
h.Set("01", "01", 10)
fmt.Println(h)
}
func (h *Hour) Set(hour string, min string, value int) {
h.v01.v01 = 10 //Here I have hardcoded it
// Is there a way to do this from the given input
// e.g. h.Set("01","01",100)
}
如果您注意到,输入为"01","01"
。我想将此输入更改为h.v01.v01
。 Go中有可能吗?
注意:在这种情况下,我目前正在使用maps
。如果可能的话,我想将其更改为结构访问权限,以便我可以使用goroutine来加速我的程序。目前,goroutine对于写入地图并不安全。
答案 0 :(得分:0)
目前goroutine不适合写入地图。
可能需要重新审视Go 1.9(2017年8月)和concurrent map
中的sync
package
Map
包中的新sync
类型是一个并发地图,其中包含摊销常数时间加载,存储和删除。
多个goroutine可以安全地同时调用Map
方法。
将我提到的oleiade/reflections
与评论时的GoLang: Access struct property by name结合起来,在" {{3}}"中,您应该能够同时执行这两项操作(访问属性名称,并使用地图)