gorm中的结构体怎么被用作*int64型。
时间: 2024-05-05 20:18:47 浏览: 123
可以通过给结构体定义自己的Scan和Value方法来将其用作*int64型。具体示例代码如下:
```
type CustomInt struct {
value int64
}
func (ci *CustomInt) Scan(src interface{}) error {
if src == nil {
ci.value = 0
return nil
}
if reflect.TypeOf(src).ConvertibleTo(reflect.TypeOf(int64(0))) {
ci.value = reflect.ValueOf(src).Int()
return nil
}
return fmt.Errorf("value of type %T cannot be converted to CustomInt", src)
}
func (ci CustomInt) Value() (driver.Value, error) {
if ci == (CustomInt{}) {
return nil, nil
}
return ci.value, nil
}
```
在gorm中,只需要在对应的结构体中实现Scan和Value方法即可,如:
```
type User struct {
ID CustomInt `gorm:"primary_key"`
Name string
}
```
这样就可以在读取或写入User结构体时,自动将其转换为*int64类型。
阅读全文