En Python es posible dividir una cadena y asignarla a variables:
ip, port = '127.0.0.1:5432'.split(':')
pero en Go no parece funcionar:
ip, port := strings.Split("127.0.0.1:5432", ":")
// assignment count mismatch: 2 = 1
Pregunta: ¿Cómo dividir una cadena y asignar valores en un solo paso?
splittedString
: =strings.Split("127.0.0.1:5432", ":")
Respuesta: =splittedString[index]
puede acceder al Valor de cadenaRespuestas:
Dos pasos, por ejemplo,
Salida:
Un paso, por ejemplo,
Salida:
fuente
err
desafortunadamente me devuelven esto :too many colons in address 2001:0db8:85a3:0000:0000:8a2e:0370:7334
:(Como
go
es flexible, puedes crear tu propiopython
estilo dividido ...fuente
Las direcciones IPv6 para campos como
RemoteAddr
fromhttp.Request
están formateadas como "[:: 1]: 53343"Entonces
net.SplitHostPort
funciona muy bien:Salida es:
fuente
Aquí está la definición de cadenas.
fuente
Hay varias formas de dividir una cadena:
_ _
División basada en la estructura:
_ _
Ahora use en su código como
ServerDetail.Host
yServerDetail.Port
Si no desea dividir una cadena específica, hágalo así:
y use like
ServerDetail.Host
yServerDetail.Port
.Eso es todo.
fuente
./prog.go:21:4: assignment mismatch: 1 variable but net.SplitHostPort returns 3 values
Lo que está haciendo es aceptar la respuesta dividida en dos variables diferentes y cadenas. Split () está devolviendo solo una respuesta y esa es una matriz de cadenas. necesita almacenarlo en una sola variable y luego puede extraer la parte de la cadena obteniendo el valor de índice de una matriz.
ejemplo:
fuente
Como nota al margen, puede incluir los separadores mientras divide la cadena en Ir. Para hacerlo, use
strings.SplitAfter
como en el ejemplo a continuación.fuente
Golang no admite el desempaque implícito de un segmento (a diferencia de Python) y esa es la razón por la que esto no funcionaría. Al igual que los ejemplos dados anteriormente, tendríamos que solucionarlo.
Una nota al margen:
El desempaquetado implícito ocurre para funciones variadas en go:
fuente