1 回答

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個(gè)贊
您必須使用類型轉(zhuǎn)換。該方法ReceiveDamage需要一個(gè)float64,但主要類型在F. 某種類型的東西F,即使僅限于浮點(diǎn)數(shù),或者即使僅限于一個(gè)特定的浮點(diǎn)數(shù),也不是float64。它是F。(此外,它也可以用 實(shí)例化float32)。
兩種轉(zhuǎn)換都可以編譯,因?yàn)閒loat64可轉(zhuǎn)換為類型參數(shù)的類型集中的所有類型,float32和float64,反之亦然。
所以方法變成:
func (c *Charmander[T]) ReceiveDamage(damage float64) {
c.Health -= T(damage)
}
func (c *Charmander[T]) InflictDamage(other Pokemon) {
other.ReceiveDamage(float64(c.AttackPower))
}
固定游樂場(chǎng):https ://go.dev/play/p/FSsdlL8tBLn
當(dāng)用 實(shí)例化時(shí),請(qǐng)注意轉(zhuǎn)換T(damage)可能會(huì)導(dǎo)致精度損失。(在這個(gè)特定的用例中,這可能不是問題……)Tfloat32
- 1 回答
- 0 關(guān)注
- 119 瀏覽
添加回答
舉報(bào)