En Python, il est possible de diviser une chaîne et de l'affecter à des variables:
ip, port = '127.0.0.1:5432'.split(':')
mais dans Go cela ne semble pas fonctionner:
ip, port := strings.Split("127.0.0.1:5432", ":")
// assignment count mismatch: 2 = 1
Question: Comment diviser une chaîne et attribuer des valeurs en une seule étape?
splittedString
: =strings.Split("127.0.0.1:5432", ":")
Ans: =splittedString[index]
vous pouvez accéder à la valeur de la chaîneRéponses:
Deux étapes, par exemple,
Production:
Une étape, par exemple,
Production:
la source
err
malheureusement de:too many colons in address 2001:0db8:85a3:0000:0000:8a2e:0370:7334
:(Comme il
go
est flexible, vous pouvez créer votre proprepython
style de division ...la source
Les adresses IPv6 des champs comme
RemoteAddr
fromhttp.Request
sont formatées comme suit: "[:: 1]: 53343"Fonctionne donc
net.SplitHostPort
très bien:La sortie est:
la source
Voici la définition des chaînes.
la source
Il existe plusieurs façons de diviser une chaîne:
_
Split basé sur struct:
_
Maintenant, utilisez dans votre code comme
ServerDetail.Host
etServerDetail.Port
Si vous ne voulez pas diviser une chaîne spécifique, procédez comme suit:
et utilisez comme
ServerDetail.Host
etServerDetail.Port
.C'est tout.
la source
./prog.go:21:4: assignment mismatch: 1 variable but net.SplitHostPort returns 3 values
Ce que vous faites, c'est que vous acceptez une réponse fractionnée en deux variables différentes, et strings.Split () ne renvoie qu'une seule réponse et c'est un tableau de chaînes. vous devez le stocker dans une variable unique, puis vous pouvez extraire la partie de la chaîne en récupérant la valeur d'index d'un tableau.
exemple :
la source
En remarque, vous pouvez inclure les séparateurs lors du fractionnement de la chaîne dans Go. Pour ce faire, utilisez
strings.SplitAfter
comme dans l'exemple ci-dessous.la source
Golang ne prend pas en charge le décompactage implicite d'une tranche (contrairement à python) et c'est la raison pour laquelle cela ne fonctionnerait pas. Comme les exemples donnés ci-dessus, nous aurions besoin de le contourner.
Une note latérale:
Le déballage implicite se produit pour les fonctions variadiques dans go:
la source
la source