Der PHP-Editor Xiaoxin zeigt Ihnen, wie Sie int in einen generischen Typ konvertieren, der complex128 in der Go-Sprache enthält. In der Go-Sprache können wir Typzusicherungen verwenden, um diese Konvertierung zu erreichen. Die Typzusicherung ist eine Möglichkeit, den Typ eines Schnittstellenwerts zu überprüfen. Die Syntax lautet val.(Typ), wobei val der Schnittstellenwert und Type der bestätigte Typ ist. Mithilfe von Typzusicherungen können wir einen Wert vom Typ int in einen generischen Wert vom Typ complex128 konvertieren, um die gewünschte Konvertierungsfunktionalität zu erreichen. Als nächstes werden wir die spezifische Implementierungsmethode im Detail vorstellen.
Ich kann nicht herausfinden, wie man konvertiert int
转换为包含 complex128
的通用类型。下面是一个示例,除非注释掉 complex128
, sonst lässt es sich nicht kompilieren:
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))) }
Dies wird aus einer größeren Berechnung vereinfacht. Ich habe versucht, Schalter zu verwenden, aber jede Syntax, die ich versuche, scheint auf den einen oder anderen Widerstand zu stoßen.
Wie multipliziere ich a
和 b
mit einer ganzen Zahl?
Ich habe versucht, einen Schalter zu verwenden, der den Variablentyp zurückgibt, z. B. any(c).(type)
但例如如果我有 case complex128:
那么它拒绝允许 complex
内置,因为它不允许返回 v
.
Das Obige wird ohne complex128
kompiliert. complex128
上面的内容将编译。
这个可以工作,但需要列出 switch
switch
-Anweisung: 🎜
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)) }
Das obige ist der detaillierte Inhalt vonWie konvertiere ich int in einen generischen Typ, der complex128 in Go enthält?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!