No Python, é possível dividir uma string e atribuí-la a variáveis:
ip, port = '127.0.0.1:5432'.split(':')
mas no Go não parece funcionar:
ip, port := strings.Split("127.0.0.1:5432", ":")
// assignment count mismatch: 2 = 1
Pergunta: Como dividir uma string e atribuir valores em uma etapa?
splittedString
: =strings.Split("127.0.0.1:5432", ":")
Ans: =splittedString[index]
você pode acessar o valor da corda divididaRespostas:
Duas etapas, por exemplo,
Resultado:
Um passo, por exemplo,
Resultado:
fonte
err
, infelizmente:too many colons in address 2001:0db8:85a3:0000:0000:8a2e:0370:7334
:(Como
go
é flexível, você pode criar sua própriapython
divisão de estilo ...fonte
Os endereços IPv6 para campos como
RemoteAddr
dehttp.Request
são formatados como "[:: 1]: 53343"Então,
net.SplitHostPort
funciona muito bem:A saída é:
fonte
Aqui está a definição para strings.
fonte
Existem várias maneiras de dividir uma string:
_
Dividir com base em struct:
_
Agora use em seu código como
ServerDetail.Host
eServerDetail.Port
Se você não deseja dividir uma sequência específica, faça o seguinte:
e use como
ServerDetail.Host
eServerDetail.Port
.Isso é tudo.
fonte
./prog.go:21:4: assignment mismatch: 1 variable but net.SplitHostPort returns 3 values
O que você está fazendo é que você está aceitando resposta dividida em duas variáveis diferentes, e strings.Split () está retornando apenas uma resposta e essa é uma matriz de strings. você precisa armazená-lo na única variável e, em seguida, pode extrair a parte da string buscando o valor do índice de uma matriz.
exemplo:
fonte
Como observação lateral, você pode incluir os separadores enquanto divide a sequência em Ir. Para fazer isso, use
strings.SplitAfter
como no exemplo abaixo.fonte
Golang não suporta descompactação implícita de uma fatia (ao contrário do python) e é por isso que isso não funcionaria. Como os exemplos dados acima, precisaríamos contorná-lo.
Uma nota lateral:
A descompactação implícita acontece para funções variadas em go:
fonte