在Python,可以分割字符串,並將其分配給變量:如何分割一個字符串並將其分配給Golang中的變量?
ip, port = '127.0.0.1:5432'.split(':')
但Golang它似乎並沒有工作:
ip, port := strings.Split("127.0.0.1:5432", ":")
// assignment count mismatch: 2 = 1
問題:如何分割字符串並在一個步驟中分配值?
在Python,可以分割字符串,並將其分配給變量:如何分割一個字符串並將其分配給Golang中的變量?
ip, port = '127.0.0.1:5432'.split(':')
但Golang它似乎並沒有工作:
ip, port := strings.Split("127.0.0.1:5432", ":")
// assignment count mismatch: 2 = 1
問題:如何分割字符串並在一個步驟中分配值?
兩個步驟,例如,
package main
import (
"fmt"
"strings"
)
func main() {
s := strings.Split("127.0.0.1:5432", ":")
ip, port := s[0], s[1]
fmt.Println(ip, port)
}
輸出:
127.0.0.1 5432
一個步驟中,例如,
package main
import (
"fmt"
"net"
)
func main() {
host, port, err := net.SplitHostPort("127.0.0.1:5432")
fmt.Println(host, port, err)
}
輸出:
127.0.0.1 5432 <nil>
由於go
是靈活的,你可以創建自己的python
風格分裂...
package main
import (
"fmt"
"strings"
"errors"
)
type PyString string
func main() {
var py PyString
py = "127.0.0.1:5432"
ip, port , err := py.Split(":") // Python Style
fmt.Println(ip, port, err)
}
func (py PyString) Split(str string) (string, string , error) {
s := strings.Split(string(py), str)
if len(s) < 2 {
return "" , "", errors.New("Minimum match not found")
}
return s[0] , s[1] , nil
}
IPv6的像RemoteAddr
從http.Request
場地址的格式爲: 「[:: 1]:53343」
所以net.SplitHostPort
的偉大工程:
包主要
import (
"fmt"
"net"
)
func main() {
host1, port, err := net.SplitHostPort("127.0.0.1:5432")
fmt.Println(host1, port, err)
host2, port, err := net.SplitHostPort("[::1]:2345")
fmt.Println(host2, port, err)
host3, port, err := net.SplitHostPort("localhost:1234")
fmt.Println(host3, port, err)
}
輸出是:
127.0.0.1 5432 <nil>
::1 2345 <nil>
localhost 1234 <nil>
這將字符串拆分爲字符串列表,而不是字符列表。 – dopatraman
如果我們獲得IPv6地址會發生什麼? – PumpkinSeed
@ PumpkinSeed只是試了一下,我從'err'返回,不幸的是:在地址2001中有太多冒號:0db8:85a3:0000:0000:8a2e:0370:7334' :( –