这个问题在这里已经有了答案:
Typecasting in Golang
(5 个回答)
1年前关闭。
阅读本文https://github.com/go-pg/pg/wiki/Writing-Queries#select我多次看到这个表达:
(*Book)(nil)
例子:
count, err := db.Model((*Book)(nil)).Count()
这是什么意思?
最佳答案
那是类型转换。假设 db.Model
函数需要 interface{}
, 它发送一个类型为 *Book
的 nil 接口(interface)到功能。
转换一个值 v
输入 Book
,你会写:
Book(v)
但是,您不能写
Book(nil)
因为nil
是一个指针,Book
不是。如果你有一个类型type BookPtr *Book
那么你可以写成
BookPtr(nil)
.扩展它,你想写 *Book(nil)
, 但这意味着 *(Book(nil))
这是无效的,因此:(*Book)(nil)
关于go - Go中一对圆括号语法表达式是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60443193/