考虑一下(https://play.golang.org/p/zvDiwul9QR0):
package main
import (
"context"
"fmt"
"time"
)
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
for {
select {
case <-ctx.Done():
fmt.Println("Done")
break
default:
for {
fmt.Println("loop")
time.Sleep(500 * time.Millisecond)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以这里上下文在 2 秒后返回一个“Done()”通道。我想抓住这个并取消我的无限循环。上面的代码示例没有这样做,它永远不会退出循环。
我怎样才能实现这个目标?
我有以下结构,我不想插入字段 Profit 和 EuroProfit。
type Order struct {
Price float64 `json:"price"`
EuroPrice float64 `json:"euro_price"`
Profit float64 `json:"profit" bson:"_"`
EuroProfit float64 `json:"euro_profit" bson:"_"`
Currency *Currency `json:"currency"`
Date customTime `json:"date"` }
Run Code Online (Sandbox Code Playgroud)
我在 mgo/bson 文档中读到我必须添加 bson:"_" 以避免插入它们。
但是当我插入结构时出现以下错误:
Duplicated key '_' in struct model.Order
Run Code Online (Sandbox Code Playgroud)
事实上,如果我只让一个'_',它会插入到mongodb中,所以 bson:"_" 似乎不起作用。
我怎样才能避免插入它们?
我使用以下导入:
“github.com/globalsign/mgo/bson”
我有一些代码。但是当我尝试运行覆盖测试并得到响应时:
'go get -u github.com/gregoryv/uncover/...
go test -coverprofile /tmp/c.out
uncover /tmp/c.out'
Run Code Online (Sandbox Code Playgroud)
我尝试安装覆盖包:
go get code.google.com/p/go.tools/cmd/cover
Run Code Online (Sandbox Code Playgroud)
但出现错误
package code.google.com/p/go.tools/cmd/cover: unrecognized import path "code.google.com/p/go.tools/cmd/cover" (parse https://code.google.com/p/go.tools/cmd/cover?go-get=1: no go-import meta tags (meta tag github.com/golang/go did not match import path code.google.com/p/go.tools/cmd/cover))
Run Code Online (Sandbox Code Playgroud)
系统:Ubuntu 18.04
调试时,使用Evaluate expression并尝试评估函数。结果显示为:“后端不支持函数调用”。为什么?
MacBook Pro M1 GoLand 2021.1.3 Go 1.16.5 arm64