Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menukar int kepada jenis generik yang mengandungi complex128 dalam Go?
Editor php Xiaoxin akan memperkenalkan kepada anda cara menukar int kepada jenis generik yang mengandungi complex128 dalam bahasa Go. Dalam bahasa Go, kita boleh menggunakan penegasan jenis untuk mencapai penukaran ini. Penegasan jenis ialah cara untuk menyemak jenis nilai antara muka Sintaksnya ialah val.(Jenis), dengan val ialah nilai antara muka dan Jenis ialah jenis yang ditegaskan. Dengan menggunakan penegasan jenis, kita boleh menukar nilai jenis int kepada nilai generik jenis kompleks128 untuk mencapai kefungsian penukaran yang diingini. Seterusnya, kami akan memperkenalkan kaedah pelaksanaan khusus secara terperinci.
Saya tidak tahu cara untuk menukar int
转换为包含 complex128
的通用类型。下面是一个示例,除非注释掉 complex128
atau ia tidak akan disusun:
package main import "fmt" type val interface { int64 | float64 | complex128 } func f[V val](a, b V) (c V) { q := calc() return a * b * V(q) } func calc() int { // lengthy calculation that returns an int return 1 } func main() { fmt.Printf("%v\n", f(int64(1), int64(2))) }
Ini dipermudahkan daripada pengiraan yang lebih besar. Saya telah cuba menggunakan suis, tetapi setiap sintaks yang saya cuba nampaknya menghadapi rintangan dari satu jenis atau yang lain.
Bagaimana untuk mendarab a
和 b
dengan integer?
Saya cuba menggunakan suis yang mengembalikan jenis pembolehubah, seperti any(c).(type)
但例如如果我有 case complex128:
那么它拒绝允许 complex
内置,因为它不允许返回 v
.
Di atas akan disusun tanpa complex128
. complex128
上面的内容将编译。
这个可以工作,但需要列出 switch
suis
: 🎜
func f[V val](a, b V) (c V) { q := calc() var temp any switch any(c).(type) { case complex128: temp = complex(float64(q), 0) case int64: temp = int64(q) default: temp = float64(q) } return a * b * (temp.(V)) }
Atas ialah kandungan terperinci Bagaimana untuk menukar int kepada jenis generik yang mengandungi complex128 dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!