一对圆括号语法表达式在 Go 中是什么意思?
What does a pair of round brackets syntax expression mean in Go?
正在读这个https://github.com/go-pg/pg/wiki/Writing-Queries#select我多次看到这个表达:
(*Book)(nil)
示例:
count, err := db.Model((*Book)(nil)).Count()
什么意思?
'nil' 之于 Go 就像 NULL/null 之于其他语言,如 C#/Java 等。 *Variable 只是获取模型的 Book 对象的指针值。
所以在这种情况下,我相信这里发生的是 (*Book)(nil) 将模型的 Book 对象的指针值设置为 nil(/null)。
希望这对您有所帮助。
那是类型转换。假设 db.Model
函数接受 interface{}
,它向函数发送类型为 *Book
的 nil 接口。
要将值 v
转换为类型 Book
,您需要编写:
Book(v)
但是,你不能写Book(nil)
,因为nil
是一个指针而Book
不是。如果你有类型
type BookPtr *Book
那么你可以写 BookPtr(nil)
。扩展它,你想写 *Book(nil)
,但这意味着 *(Book(nil))
是无效的,因此:
(*Book)(nil)
正在读这个https://github.com/go-pg/pg/wiki/Writing-Queries#select我多次看到这个表达:
(*Book)(nil)
示例:
count, err := db.Model((*Book)(nil)).Count()
什么意思?
'nil' 之于 Go 就像 NULL/null 之于其他语言,如 C#/Java 等。 *Variable 只是获取模型的 Book 对象的指针值。
所以在这种情况下,我相信这里发生的是 (*Book)(nil) 将模型的 Book 对象的指针值设置为 nil(/null)。
希望这对您有所帮助。
那是类型转换。假设 db.Model
函数接受 interface{}
,它向函数发送类型为 *Book
的 nil 接口。
要将值 v
转换为类型 Book
,您需要编写:
Book(v)
但是,你不能写Book(nil)
,因为nil
是一个指针而Book
不是。如果你有类型
type BookPtr *Book
那么你可以写 BookPtr(nil)
。扩展它,你想写 *Book(nil)
,但这意味着 *(Book(nil))
是无效的,因此:
(*Book)(nil)