Heim > Backend-Entwicklung > Golang > Wie konvertiere ich int in einen generischen Typ, der complex128 in Go enthält?

Wie konvertiere ich int in einen generischen Typ, der complex128 in Go enthält?

王林
Freigeben: 2024-02-09 11:54:10
nach vorne
1250 Leute haben es durchsucht

Wie konvertiere ich int in einen generischen Typ, der complex128 in Go enthält?

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.

Frageninhalt

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)))
}
Nach dem Login kopieren

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 ab 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

Problemumgehung🎜🎜Dies funktioniert, erfordert jedoch die Auflistung jedes Typs in der 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))
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage