Dengan Python dimungkinkan untuk membagi string dan menetapkannya ke variabel:
ip, port = '127.0.0.1:5432'.split(':')
tetapi di Go tampaknya tidak berfungsi:
ip, port := strings.Split("127.0.0.1:5432", ":")
// assignment count mismatch: 2 = 1
Pertanyaan: Bagaimana cara membagi string dan menetapkan nilai dalam satu langkah?
splittedString
: =strings.Split("127.0.0.1:5432", ":")
Ans: =splittedString[index]
Anda dapat mengakses Nilai String yangJawaban:
Dua langkah, misalnya,
Keluaran:
Satu langkah, misalnya,
Keluaran:
sumber
err
, sayangnya:too many colons in address 2001:0db8:85a3:0000:0000:8a2e:0370:7334
:(Karena
go
fleksibel dan Anda dapat membuatpython
gaya ...sumber
Alamat IPv6 untuk bidang seperti
RemoteAddr
darihttp.Request
diformat sebagai "[:: 1]: 53343"Sangat
net.SplitHostPort
bagus:Output adalah:
sumber
Berikut adalah definisi untuk string
sumber
Ada beberapa cara untuk membagi string:
_
Split berdasarkan struct:
_
Sekarang gunakan kode seperti Anda
ServerDetail.Host
danServerDetail.Port
Jika Anda tidak ingin membagi string tertentu lakukan seperti ini:
dan gunakan like
ServerDetail.Host
danServerDetail.Port
.Itu saja.
sumber
./prog.go:21:4: assignment mismatch: 1 variable but net.SplitHostPort returns 3 values
Apa yang Anda lakukan adalah, Anda menerima respons terbagi dalam dua variabel yang berbeda, dan strings.Split () mengembalikan hanya satu respons dan itu adalah array string. Anda perlu menyimpannya ke variabel tunggal dan kemudian Anda dapat mengekstraksi bagian string dengan mengambil nilai indeks array.
contoh:
sumber
Sebagai catatan tambahan, Anda dapat memasukkan pemisah sambil memisahkan string di Go. Untuk melakukannya, gunakan
strings.SplitAfter
seperti pada contoh di bawah ini.sumber
Golang tidak mendukung pembongkaran implisit slice (tidak seperti python) dan itulah alasan ini tidak akan berhasil. Seperti contoh yang diberikan di atas, kita perlu mengatasinya.
Catatan satu sisi:
Pembongkaran implisit terjadi untuk fungsi variadic di mana saja:
sumber