php小编小新将为大家介绍在Go语言中如何将int转换为包含complex128的泛型类型。在Go语言中,我们可以使用类型断言来实现这个转换。类型断言是一种检查接口值的类型的方式,它的语法形式为val.(Type),其中val是接口值,Type是断言的类型。通过使用类型断言,我们可以将int类型的值转换为complex128类型的泛型值,从而实现所需的转换功能。接下来,我们将详细介绍具体的实现方法。
我无法弄清楚如何将 int
转换为包含 complex128
的通用类型。下面是一个示例,除非注释掉 complex128
,否则不会编译:
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))) }
这是从更大的计算中简化而来的。我尝试过使用开关,但我尝试的每一种语法似乎都会遇到这样或那样的阻力。
如何将 a
和 b
与整数相乘?
我尝试使用返回变量类型的开关,例如 any(c).(type)
但例如如果我有 case complex128:
那么它拒绝允许 complex
内置,因为它不允许返回 v
。
如果没有 complex128
上面的内容将编译。complex128
上面的内容将编译。
这个可以工作,但需要列出 switch
switch
语句中的每种类型:🎜
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)) }
以上是在Go中如何将int转换为包含complex128的泛型类型?的详细内容。更多信息请关注PHP中文网其他相关文章!