Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan kandungan artikel: * Cara Menggunakan Jenis Terkekang sebagai Argumen Fungsi dalam Go 1.18 Generik: Ini adalah tajuk langsung dan bermaklumat yang menyerlahkan ke

Susan Sarandon
Lepaskan: 2024-10-28 09:57:29
asal
236 orang telah melayarinya

Here are a few question-based titles that fit the article's content:

* How to Use Constrained Types as Function Arguments in Go 1.18 Generics:  This is a direct and informative title highlighting the core issue and solution.
* Go 1.18 Generics:  Why Can

Jenis Terkekang sebagai Argumen Fungsi dalam Go 1.18 Generik

Generik Go 1.18 menawarkan kekangan jenis yang berkuasa, membenarkan pembangun mentakrifkan jenis tersuai dengan tingkah laku tertentu. Walau bagaimanapun, menggunakan jenis terkekang ini sebagai hujah kepada fungsi yang mengharapkan jenis konkrit boleh membawa kepada ralat penyusunan.

Masalah:

Pertimbangkan contoh yang diberikan, di mana struct Charmander ditakrifkan sebagai jenis generik dengan parameter jenis F. Apabila cuba menggunakan kuasa serangan Charmander untuk menyebabkan kerosakan menggunakan kaedah InflictDamage, pengkompil menimbulkan ralat.

Mesej Ralat:

cannot use c.AttackPower (variable of type float64 constrained by Float) as float64 value in argument to other.ReceiveDamage compiler(IncompatibleAssign)
Salin selepas log masuk

Ralat ini berlaku kerana kaedah InflictDamage menjangkakan hujah float64, tetapi pembolehubah AttackPower adalah daripada jenis terkekang, F.

Penyelesaian:

Untuk menyelesaikan ralat ini, perlu menggunakan penukaran jenis. Jenis F yang dikekang boleh ditukar kepada float64 dengan menghantar nilainya secara eksplisit, seperti yang ditunjukkan dalam kod yang disemak:

func (c *Charmander[T]) ReceiveDamage(damage float64) {
    c.Health -= T(damage)
}

func (c *Charmander[T]) InflictDamage(other Pokemon) {
    other.ReceiveDamage(float64(c.AttackPower))
}
Salin selepas log masuk

Penukaran ini sah kerana float64 serasi dengan float32 dan float64, jenis yang dibenarkan oleh jenis parameter F. Adalah penting untuk ambil perhatian bahawa menghantar F secara eksplisit kepada float64 boleh mengakibatkan kehilangan ketepatan jika F digunakan dengan float32.

Atas ialah kandungan terperinci Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan kandungan artikel: * Cara Menggunakan Jenis Terkekang sebagai Argumen Fungsi dalam Go 1.18 Generik: Ini adalah tajuk langsung dan bermaklumat yang menyerlahkan ke. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!