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
WBOYnach vorne
2024-02-09 08:51:33576Durchsuche

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
Die Funktion

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

zurück
["val1", "val2"] 

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)
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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen