它看起來可以用作可以填充任何類型的列表,但是我不明白語法。為什么有兩組{}? 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 關注
- 132 瀏覽
添加回答
舉報
0/150
提交
取消