Maison > développement back-end > Golang > go-redis Eval func renvoie le type de valeur lorsque le script Lua renvoie un tableau

go-redis Eval func renvoie le type de valeur lorsque le script Lua renvoie un tableau

WBOY
Libérer: 2024-02-09 08:51:33
avant
580 Les gens l'ont consulté

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

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.

Contenu de la question

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
Copier après la connexion
La fonction d'évaluation

go-redis renverra le lot d'entrées sous la forme

["val1", "val2"] 
Copier après la connexion

Solution

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 脚本 runeval 都返回 *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

est un getter pratique qui peut récupérer instantanément []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)
Copier après la connexion
Si les valeurs ne sont pas réellement toutes des chaînes, utilisez 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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal