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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-02-09 08:51:33
avant
695 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!

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