Rumah >pembangunan bahagian belakang >Golang >Melewati parameter jenis dengan kekangan tepat kepada fungsi dengan parameter itu?

Melewati parameter jenis dengan kekangan tepat kepada fungsi dengan parameter itu?

WBOY
WBOYke hadapan
2024-02-05 23:48:11624semak imbas

Melewati parameter jenis dengan kekangan tepat kepada fungsi dengan parameter itu?

Kandungan soalan

Saya mula menggunakan go generik dan saya sukar memahami sebab kod ini tidak disusun:

func f(string) {}

func xyz[T string](p T) {
    f(p) // Error! Cannot use 'p' (type T) as the type string
}

Dalam fungsi xyz, mengapa kita tidak boleh menganggap bahawa t mempunyai kekangan jenis supaya t adalah jenis rentetan?

Saya tahu saya boleh menulis f(string(p)), tetapi saya masih berminat dengan jawapan kepada soalan itu.


Jawapan betul


Ini kerana peraturan kebolehtugasan, yang dalam kes khusus anda ialah peraturan terakhir.

v ialah parameter jenis, t bukan jenis bernama , dan nilai setiap jenis dalam set jenis v boleh diberikan kepada t.

Type string ialah string 是一个命名类型,因此,尽管 t 类型集中的每个类型都可分配给 string,但类型参数 t 本身不可分配给 stringnamed type

, jadi walaupun setiap jenis dalam set type t boleh diberikan kepada string, parameter jenis t sendiri tidak boleh diserahkan kepada string.

Anda boleh membandingkannya dengan jenis tanpa nama

. 🎜
func f([]string) {}

func xyz[T []string](p T) {
    f(p) // no issue
}

Atas ialah kandungan terperinci Melewati parameter jenis dengan kekangan tepat kepada fungsi dengan parameter itu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam