В Python можно разбить строку и назначить ее переменным:
ip, port = '127.0.0.1:5432'.split(':')
но в Go это, похоже, не работает:
ip, port := strings.Split("127.0.0.1:5432", ":")
// assignment count mismatch: 2 = 1
Вопрос: Как разбить строку и присвоить значения за один шаг?
splittedString
: =strings.Split("127.0.0.1:5432", ":")
Ответ: =splittedString[index]
вы можете получить доступ к значению разделенной строкиОтветы:
Два шага, например,
Вывод:
Один шаг, например,
Вывод:
источник
err
, к сожалению, получаю это обратно :too many colons in address 2001:0db8:85a3:0000:0000:8a2e:0370:7334
:(Так
go
как вы можете создать свой собственныйpython
стиль ...источник
Адреса IPv6 для полей типа
RemoteAddr
fromhttp.Request
отформатированы как «[:: 1]: 53343»Так
net.SplitHostPort
прекрасно работаетВыход:
источник
Вот определение для строк.
источник
Есть несколько способов разбить строку:
_
Разделить на основе структуры:
_
Теперь используйте в вашем коде, как
ServerDetail.Host
иServerDetail.Port
Если вы не хотите разбивать определенную строку, сделайте это так:
и использовать как
ServerDetail.Host
иServerDetail.Port
.Вот и все.
источник
./prog.go:21:4: assignment mismatch: 1 variable but net.SplitHostPort returns 3 values
Что вы делаете, вы принимаете разделенный ответ в двух разных переменных, и strings.Split () возвращает только один ответ, и это массив строк. вам нужно сохранить его в одну переменную, а затем вы можете извлечь часть строки, извлекая значение индекса массива.
пример :
источник
В качестве примечания вы можете включить разделители при разбиении строки в Go. Для этого используйте
strings.SplitAfter
как в примере ниже.источник
Golang не поддерживает неявную распаковку фрагмента (в отличие от python), и по этой причине это не сработает. Как и в приведенных выше примерах, мы должны обойти это.
Примечание к одной стороне:
Неявная распаковка происходит для переменных функций в go:
источник
источник