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.
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
go-redis eval gibt den Stapel von Einträgen als
zurück["val1", "val2"]
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
脚本 run
和 eval
都返回 *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
[]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)
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!