Heim > Backend-Entwicklung > Golang > go-redis Eval func Rückgabewerttyp, wenn das Lua-Skript ein Array zurückgibt

go-redis Eval func Rückgabewerttyp, wenn das Lua-Skript ein Array zurückgibt

WBOY
Freigeben: 2024-02-09 08:51:33
nach vorne
577 Leute haben es durchsucht

go-redis Eval func返回值类型,当Lua脚本返回数组时

Der PHP-Editor Xigua ist hier, um Ihnen das Problem mit dem Rückgabewerttyp der Eval-Funktion in der go-redis-Bibliothek vorzustellen. Wenn Sie ein Lua-Skript zum Ausführen der Eval-Funktion verwenden, gibt das Skript manchmal ein Array zurück. Was ist also der Typ dieses Rückgabewerts in der go-redis-Bibliothek? Beantworten wir diese Frage im Folgenden ausführlich.

Frageninhalt

Wenn ein Lua-Skript während eines Eval-Aufrufs ein Tabellenarray zurückgibt, wie konvertiere ich es in go in einen []-String?

redis cli gibt Batch-Antworten im folgenden Format zurück.

1) val1
2) val2
Nach dem Login kopieren
Die Funktion

go-redis eval gibt den Stapel von Einträgen als

zurück
["val1", "val2"] 
Nach dem Login kopieren

Solution

redis gibt das Lua-Tabellenarray als resp2-Array zurück. Der Go-Client ordnet diese Antwort dann einem Go-Native-Typ zu. go-redis Relevante Dokumentation finden Sie hier: Lua- und Go-Typen.

Einfach ausgedrückt: Lua-Tabellen werden Massenantworten zugeordnet, während Go-Clients sie Schnittstellenfragmenten zuordnen: []interface{}.

go-redis 脚本 runeval 都返回 *cmd。您可以使用此类型的方法来检索 go 类型的输出。 result 给出 (interface{}, error),您可以键入断言任何您想要的内容,否则 stringslice 是一个方便的 getter,可以立即检索 []string Beide Skripte run und eval geben *cmd zurück. Sie können diese Art von Methode verwenden, um die Ausgabe vom Typ „go“ abzurufen. result Wenn (interface{}, error) gegeben ist, können Sie „assertieren“ eingeben, was Sie wollen, andernfalls stringslice

ist ein praktischer Getter, der []string sofort abrufen kann.

So sieht es aus:

script := redis.NewScript(`
  local foo = {"val1", "val2"}
  return foo
`)

cmd := script.Run(/* parameters */)

i, err := cmd.Result() // (interface, error)
// or
ss, err := cmd.StringSlice() // ([]string, error)
Nach dem Login kopieren
Wenn es sich bei den Werten tatsächlich nicht ausschließlich um Zeichenfolgen handelt, verwenden Sie slice 获取 []interface{}slice, um ein 🎜-Slice zu erhalten, und prüfen Sie dann die Elemente einzeln. 🎜

Das obige ist der detaillierte Inhalt vongo-redis Eval func Rückgabewerttyp, wenn das Lua-Skript ein Array zurückgibt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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