L'éditeur PHP Xigua est là pour vous présenter le problème du type de valeur de retour de la fonction Eval dans la bibliothèque go-redis. Lorsque vous utilisez un script Lua pour exécuter la fonction Eval, le script renvoie parfois un tableau. Alors dans la bibliothèque go-redis, quel est le type de cette valeur de retour ? Répondons à cette question en détail ci-dessous.
Lorsqu'un script Lua renvoie un tableau de table lors d'un appel eval, comment puis-je le convertir en chaîne [] en go ?
redis cli renvoie des réponses par lots au format suivant.
1) val1 2) val2
go-redis renverra le lot d'entrées sous la forme
["val1", "val2"]
redis renvoie le tableau de table Lua sous forme de tableau resp2. Le client go mappera ensuite cette réponse à un type go natif. go-redis
La documentation pertinente peut être trouvée ici : types Lua et Go.
En termes simples, les tables Lua sont mappées aux réponses groupées, tandis que les clients Go les mappent aux fragments d'interface : []interface{}
.
go-redis
脚本 run
和 eval
都返回 *cmd
。您可以使用此类型的方法来检索 go 类型的输出。 result
给出 (interface{}, error)
,您可以键入断言任何您想要的内容,否则 stringslice
是一个方便的 getter,可以立即检索 []string
Les deux scripts run
et eval
renvoient *cmd
. Vous pouvez utiliser ce type de méthode pour récupérer la sortie de type go. result
Étant donné (interface{}, error)
, vous pouvez taper assert ce que vous voulez, sinon stringslice
[]string
. Donc ça ressemble à :
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
pour obtenir une 🎜 tranche, puis inspectez les éléments individuellement. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!