


Wie kann ich eine Liste von Schnittstellen aus einer for-Schleife in Go zurückgeben?
In der Go-Sprache können wir Datenstrukturen wie Arrays, Slices und Maps durch for-Schleifen durchlaufen. Manchmal müssen wir jedoch eine Liste von Schnittstellen in einer Schleife zurückgeben. Dies ist eine häufige Anforderung, da eine Schnittstelle ein abstrakter Typ ist, der mehrere konkrete Typen darstellen kann. In diesem Artikel wird erläutert, wie Sie eine for-Schleife in Go verwenden, um eine Liste von Schnittstellen zurückzugeben. Zunächst müssen wir die Konzepte von Schnittstellentypen und Typzusicherungen in Go verstehen.
Frageninhalt
Wie gebe ich eine Liste von Schnittstellen aus einer for-Schleife in go zurück? Angenommen, ich habe die folgenden Daten:
id | Name | Projekttyp |
---|---|---|
1 | Projektname | 1 |
2 | Projektname | 1 |
3 | Projektname | 1 |
4 | Projektname | 2 |
5 | Projektname | 2 |
6 | Projektname | 3 |
7 | Projektname | 3 |
8 | Projektname | 3 |
9 | Projektname | 4 |
10 | Projektname | 4 |
Ich kann den folgenden Go-Code verwenden, um zwei Listen mit project_type=1 und project_type=2 zu erhalten,
func (d *db) projectlist(type, uid string, size uint64) (interface{}, interface{}, error) { type resp struct { name string `json:"name"` id string `json:"id"` projecttype string `json:"project_type"` } var project_type_1 []*resp var project_type_2 []*resp sql = fmt.sprintf(sql, where.string()) _, err := d.ctx.db().selectbysql("select * from project where project_type=1 order by rand() limit 10").load(&project_type_1) _, err = d.ctx.db().selectbysql("select * from project where project_type=2 order by rand() limit 10").load(&project_type_2) return project_type_1, project_type_2, err }
Aber jetzt sind die Daten von project_type 的json[{"project_type":1,"name":"something else"},{"project_type":2,"name":"something else"},{ "project_type":3,"name":"something else"},{"project_type":4,"name":"something else"}]
, project_type ist größer als 2, ich muss eine Liste von interface{} abrufen, ich versuche den folgenden Code neu zu schreiben, weiß aber nicht, was ich als nächstes schreiben soll und wie ich das zurückgeben soll Schnittstellenliste aus der for-Schleife in go? Danke für deinen Vorschlag.
func newprojectlist(d *db) ([]interface{}, error) { var s = make([]projecttype, 0) data, err := d.querystring("project_type") if err != nil { return nil, err } err = json.unmarshal([]byte(data), &s) if err != nil { return nil, err } for _, shorttype := range s { fmt.println("this is shorttype", shorttype) } return nil, err }
Workaround
Wenn Sie 10 Ergebnisse pro Projekttyp wünschen (alle 10*n Ergebnisse):
func (d *db) projectlist(type, uid string, size uint64) ([]interface{}, error) { type resp struct { name string `json:"name"` id string `json:"id"` projecttype string `json:"project_type"` } // get all types, you can get it from db // example: select distinct projecttype from project types := []string{"1", "2", "3", "4"} ans := []interface{}{} for _, stype := range types { var project_type []*resp sql = fmt.sprintf(sql, where.string()) _, err := d.ctx.db().selectbysql("select * from project where project_type=" + stype + " order by rand() limit 10").load(&project_type) ans = append(ans, project_type) } return ans, nil }
Wenn es insgesamt 10 Ergebnisse über alle Arten gibt:
i write it if you need it
Das obige ist der detaillierte Inhalt vonWie kann ich eine Liste von Schnittstellen aus einer for-Schleife in Go zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Bei der Verwendung von Goland für GO -Sprachentwicklung begegnen viele Entwickler benutzerdefinierte Struktur -Tags ...

Der Unterschied zwischen Stringdruck in GO -Sprache: Der Unterschied in der Wirkung der Verwendung von Println und String () ist in Go ...

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...

Das Problem der Verwendung von RETISTREAM zur Implementierung von Nachrichtenwarteschlangen in der GO -Sprache besteht darin, die Go -Sprache und Redis zu verwenden ...

Zwei Möglichkeiten, Strukturen in der GO -Sprache zu definieren: Der Unterschied zwischen VAR- und Typ -Schlüsselwörtern. Bei der Definition von Strukturen sieht die Sprache oft zwei verschiedene Schreibweisen: Erstens ...

Go Zeigersyntax und Probleme bei der Verwendung der Viper -Bibliothek bei der Programmierung in Go -Sprache. Es ist entscheidend, die Syntax und Verwendung von Zeigern zu verstehen, insbesondere in ...
