阅读此https://github.com/go-pg/pg/wiki/Writing-Queries#select,我多次看到此表达式:
(*Book)(nil)
示例:
count, err := db.Model((*Book)(nil)).Count()
这是什么意思?
这是类型转换。如果db.Model
函数采用{}interface{}
,则它正在向该函数发送类型为*Book
的nil接口。
要将值v
转换为类型Book
,请输入:
Book(v)
但是,由于Book(nil)
是指针而nil
不是指针,因此您不能写Book
。如果您有类型
type BookPtr *Book
那么您可以写BookPtr(nil)
。扩展一下,您想写*Book(nil)
,但这意味着*(Book(nil))
无效,因此:
(*Book)(nil)
'nil'是去去其他语言(例如C#/ Java等)的NULL / null。* Variable只是获取Model的Book对象的指针值。
因此,在这种情况下,我相信这里发生的是(* Book)(nil)将Model的Book对象的指针值设置为nil(/ null)。
希望这会有所帮助。 😊