3 回答
TA贡献1909条经验 获得超7个赞
值基于用户空间,您可能需要将代码更改为:
type MyDataType struct {}
func (f *MyDataType) Scan(context context.Context, value interface{}) error {
// proceed the context right there
}
func (f MyDataType) Value() (driver.Value, error) {
//
}
TA贡献1895条经验 获得超7个赞
您不能更改参数func Scan或func Value尝试这样做会破坏MyDataType'sql.Scanner和sql.Valuer实施。
可以通过嵌入来context.Context完成MyDataType。
type MyDataType struct {
context.Context
}
func (f *MyDataType) Scan(value interface{}) error {
ctx := context.Background()
ctx = context.WithValue(ctx, "key", value)
f.Context = ctx
return nil
}
func (f MyDataType) Value() (driver.Value, error) {
value := f.Context.Value("key")
return value, nil
}
TA贡献1852条经验 获得超1个赞
您需要访问什么上下文?
Scan(...) 用于将数据库原始数据转换为您的自定义字段类型。你应该知道格式。
Value() 是另一种方式,它将您的自定义字段转换为应放置在数据库中的任何内容。
- 3 回答
- 0 关注
- 172 浏览
添加回答
举报