它看起來(lái)可以用作可以填充任何類型的列表,但是我不明白語(yǔ)法。為什么有兩組{}? args := []interface{}{}
args = append(args, check.ID, checkNumber)
err := db.Exec(query, args...).Error
1 回答

慕容森
TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
讓我們從內(nèi)部語(yǔ)法構(gòu)建到外部語(yǔ)法。按照我的描述中的鏈接獲取每個(gè)語(yǔ)法元素的詳細(xì)說(shuō)明。
interface{}
是沒(méi)有方法的接口的類型規(guī)范。這通常稱為空接口。所有類型都滿足空接口。[]interface{}
是空接口的一部分。[]interface{}{}
是不包含任何元素的空接口切片的復(fù)合文字表達(dá)式。
第一組{}
是接口聲明的一部分。接口中沒(méi)有方法。
第二組{}
是切片的復(fù)合文字表達(dá)式的一部分。切片中沒(méi)有元素。
作為旁注,問(wèn)題中的代碼可以簡(jiǎn)化為:
args := interface{}{check.ID, checkNumber} err := db.Exec(query, args...).Error
并進(jìn)一步:
err := db.Exec(query, check.ID, checkNumber).Error
編譯器自動(dòng)構(gòu)造[]interface{}
from variadic arguments。
- 1 回答
- 0 關(guān)注
- 137 瀏覽
添加回答
舉報(bào)
0/150
提交
取消