167 votes

Comment diviser une chaîne de caractères et l'affecter à des variables ?

En Python, il est possible de diviser une chaîne de caractères 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 de caractères et lui attribuer des valeurs en une seule étape ?

1voto

amku91 Points 507

Il y a plusieurs façons de diviser une chaîne de caractères :

  1. Si vous voulez que ce soit temporaire, divisez-le comme ceci :

_

import net package

host, port, err := net.SplitHostPort("0.0.0.1:8080")
if err != nil {
fmt.Println("Error is splitting : "+err.error());
//do you code here
}
fmt.Println(host, port)
  1. Fractionnement en fonction de la structure :

    • Créez une structure et divisez-la comme ceci

_

type ServerDetail struct {
    Host       string
    Port       string
    err        error
}

ServerDetail = net.SplitHostPort("0.0.0.1:8080") //Specific for Host and Port

Maintenant, utilisez dans votre code comme ServerDetail.Host y ServerDetail.Port

Si vous ne voulez pas diviser une chaîne spécifique, procédez comme suit :

type ServerDetail struct {
    Host       string
    Port       string
}

ServerDetail = strings.Split([Your_String], ":") // Common split method

et utiliser comme ServerDetail.Host y ServerDetail.Port .

C'est tout.

1voto

Hardik Bohra Points 21

Ce que vous faites, c'est que vous acceptez la réponse divisée dans 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 seule variable et ensuite vous pouvez extraire la partie de la chaîne en récupérant la valeur d'index d'un tableau.

exemple :

 var hostAndPort string
    hostAndPort = "127.0.0.1:8080"
    sArray := strings.Split(hostAndPort, ":")
    fmt.Println("host : " + sArray[0])
    fmt.Println("port : " + sArray[1])

1voto

monkrus Points 57

À titre d'information, vous pouvez inclure les séparateurs lors de la division de la chaîne dans Go. Pour ce faire, utilisez strings.SplitAfter comme dans l'exemple ci-dessous.

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Printf("%q\n", strings.SplitAfter("z,o,r,r,o", ","))
}

1voto

Kevin007 Points 77
**In this function you can able to split the function by golang using array of strings**

func SplitCmdArguments(args []string) map[string]string {
    m := make(map[string]string)
    for _, v := range args {
        strs := strings.Split(v, "=")
        if len(strs) == 2 {
            m[strs[0]] = strs[1]
        } else {
            log.Println("not proper arguments", strs)
        }
    }
    return m
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X