猿问

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

它看起来可以用作可以填充任何类型的列表,但是我不明白语法。为什么有两组{}?

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



HUWWW
浏览 145回答 1
1回答

慕容森

让我们从内部语法构建到外部语法。按照我的描述中的链接获取每个语法元素的详细说明。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。
随时随地看视频慕课网APP

相关分类

Go
我要回答