它看起来可以用作可以填充任何类型的列表,但是我不明白语法。为什么有两组{}? 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。
- 1 回答
- 0 关注
- 109 浏览
添加回答
举报
0/150
提交
取消