Maison >développement back-end >Golang >Comment convertir un int en type générique contenant complex128 dans Go ?
L'éditeur php Xiaoxin vous présentera comment convertir un int en un type générique contenant complex128 en langage Go. En langage Go, nous pouvons utiliser des assertions de type pour réaliser cette conversion. L'assertion de type est un moyen de vérifier le type d'une valeur d'interface. Sa syntaxe est val. (Type), où val est la valeur de l'interface et Type est le type affirmé. En utilisant des assertions de type, nous pouvons convertir une valeur de type int en une valeur générique de type complex128 pour obtenir la fonctionnalité de conversion souhaitée. Ensuite, nous présenterons en détail la méthode de mise en œuvre spécifique.
Je n'arrive pas à comprendre comment convertir int
转换为包含 complex128
的通用类型。下面是一个示例,除非注释掉 complex128
ou il ne compilera pas :
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))) }
Ceci est simplifié à partir d’un calcul plus large. J'ai essayé d'utiliser des commutateurs, mais chaque syntaxe que j'essaie semble se heurter à une résistance d'une sorte ou d'une autre.
Comment multiplier a
和 b
par un entier ?
J'ai essayé d'utiliser un commutateur qui renvoie le type de variable, comme any(c).(type)
但例如如果我有 case complex128:
那么它拒绝允许 complex
内置,因为它不允许返回 v
.
Ce qui précède sera compilé sans 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)) }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!