我知道我们要使用上下文传播来获取作为彼此子级创建的父级 Traceid 和 Span,但我的发布者正在使用标头(nats 不是 http)
我的消息代理使用标头,我将traceid和spanid设置为出站请求中的标头,发送消息,然后订阅者应该能够创建一个新的span,将父traceid设置为请求中的traceid。将它们联系起来
我的出站请求如下所示:
msg := new(nats.Msg)
msg.Data = []byte("new request being sent!")
msg.Subject = subject
getTraceID := requestSpan.SpanContext().TraceID().String()
header := make(nats.Header)
msg.Header = header
header.Set("traceid", getTraceID)
getSpanID := requestSpan.SpanContext().SpanID().String(
header.Set("spanid", getSpanID)
msg.Header = header
reply, err := nc.RequestMsg(msg, time.Duration(5*time.Second))
Run Code Online (Sandbox Code Playgroud)
这有效,在订阅者端我可以获取跟踪和跨度 ID 的标头值
如何使用 Traceid 在订阅者端构建上下文/跨度?
我相信我可以在频道内做这样的事情:
var traceID trace.TraceID
traceID, err = trace.TraceIDFromHex(request.TraceID)
if err != nil {
fmt.Println("error: ", err)
continue
}
var spanID trace.SpanID
spanID, err = trace.SpanIDFromHex(request.SpanID)
if err != nil { …Run Code Online (Sandbox Code Playgroud) 我有一个从使用新 mongo-go-driver 的 mongo 查询生成的 map[string]interface{}
我想处理地图中的某些值并替换属于聚合键的值中的 £ 字符
这是地图:
result2 = map[aggregate:[map[£match:map[Source:Cities]] map[£sort:map[Order:1]]] collection:aggregate_stats db:stats]
Run Code Online (Sandbox Code Playgroud)
循环遍历地图:
for key, value := range result2 {
fmt.Println("key from result2:", key, " || ", "value from result 2:", value)
if key == "aggregate" {
fmt.Println("FOUND AGGREGATE || ", "value:", value, " || type: ", reflect.TypeOf(value))
}
if valueMSI, ok := value.([]interface{}); ok {
fmt.Println("Working", valueMSI)
fmt.Println(reflect.TypeOf(valueMSI))
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在检查聚合键的 if 语句中,第一个打印语句的输出给出的类型为:
primitive.A
Run Code Online (Sandbox Code Playgroud)
但它在打印时似乎是地图的 []interface{}?[见结果2]
考虑到这一点,为什么不评估第二个 if 语句?
这是否意味着primitive.A != 接口数组?
在文档https://godoc.org/go.mongodb.org/mongo-driver/bson/primitive …
我正在Go中制作一个PDF生成器,其中一个部分将是一个表格.要创建一个表,我需要说明列的宽度,这将通过获取页面宽度(减去边距)并除以表中的列数来完成
表中的列是在这样的结构中定义的:
type Person struct {
Name string `json:"Name"`
Age string `json:"Age"`
Comment string `json:"Comment"`
}
Run Code Online (Sandbox Code Playgroud)
并且JSON被解组了
我不想将"3"作为列号硬编码到我的代码中,并想知道如何以编程方式从JSON或结构本身计算属性
我现在花了几天时间搜索,所有结果都集中在人们无法获得价值观,但我想要钥匙!
提前致谢