go - Go中一对圆括号语法表达式是什么意思?

标签 go syntax expression rules

这个问题在这里已经有了答案:





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/

相关文章:

go - 从 exec.Command 调用 "sed"

jquery - 在 css 方法语法中混合百分比和像素

vb.net - 接收错误 BC30201 : Expression expected

r - 在表达式中包含变量、逗号和希腊符号

ios - 使用 UIPopoverViewController 时预期的表达式错误

docker - 复制失败 : Forbidden path outside the build context

go - 我们应该在 goroutine 中同步变量赋值吗?

go - 如何在单个程序中使用多个 sync.WaitGroup

iphone - 关于多组件依赖的uipickerview的实现

ruby - 基本 ruby 问题 : the { } vs do/end construct for blocks