Fre*_*ors -2 syntax expression rules go
阅读这个https://github.com/go-pg/pg/wiki/Writing-Queries#select我看到很多次这个表达式:
(*Book)(nil)
Run Code Online (Sandbox Code Playgroud)
例子:
count, err := db.Model((*Book)(nil)).Count()
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
那就是类型转换。假设db.Model函数采用interface{},它会向函数发送一个 nil 类型的接口*Book。
要将值转换v为 type Book,您可以编写:
Book(v)
Run Code Online (Sandbox Code Playgroud)
但是,你不能写,Book(nil)因为nil是一个指针而Book不是。如果你有一个类型
type BookPtr *Book
Run Code Online (Sandbox Code Playgroud)
那么你可以写BookPtr(nil). 扩展它,你想写*Book(nil),但这意味着*(Book(nil))这是无效的,因此:
(*Book)(nil)
Run Code Online (Sandbox Code Playgroud)