为了账号安全,请及时绑定邮箱和手机立即绑定

args := []interface{}{} 在 golang 中是什么意思?

args := []interface{}{} 在 golang 中是什么意思?

Go
HUWWW 2022-11-08 15:58:51
它看起来可以用作可以填充任何类型的列表,但是我不明白语法。为什么有两组{}?    args := []interface{}{}     args = append(args, check.ID, checkNumber)     err := db.Exec(query, args...).Error
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

让我们从内部语法构建到外部语法。按照我的描述中的链接获取每个语法元素的详细说明。

  • interface{}是没有方法的接口的类型规范。这通常称为空接口。所有类型都满足空接口。

  • []interface{}接口的一部分。

  • []interface{}{}是不包含任何元素的空接口切片的复合文字表达式。

第一组{}是接口声明的一部分。接口中没有方法。

第二组{}是切片的复合文字表达式的一部分。切片中没有元素。

作为旁注,问题中的代码可以简化为:

args := interface{}{check.ID, checkNumber}
err := db.Exec(query, args...).Error

并进一步:

err := db.Exec(query, check.ID, checkNumber).Error

编译器自动构造[]interface{}from variadic arguments


查看完整回答
反对 回复 2022-11-08
  • 1 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信