The Port
method mengembalikan string dan bukan integer. Apa alasannya dan apakah aman untuk mengawali port dengan ":"?
103
Ini karena apa yang muncul setelah titik dua bisa berupa nomor port atau nama layanan.
Berikut ini adalah contoh yang valid di mana nama layanan digunakan sebagai pengganti nomor port:
listener, err := net.Listen("tcp", "localhost:https") // port 443
// ...
Pemetaan port untuk layanan tertentu dapat dicari dengan menggunakan net.LookupPort
. Pada sistem Unix, /etc/services
file tersebut bersumber untuk pemetaan.
Untuk angka, nilai defaultnya adalah 0: jika sebuah fungsi
nomor kembali bukannya sting port akan menjadi 0
Port 0 adalah port yang dicadangkan dalam jaringan TCP / IP, artinya port tersebut tidak boleh digunakan dalam pesan TCP atau UDP. Namun, port 0 membawa signifikansi khusus dalam pemrograman jaringan, terutama pemrograman soket Unix: untuk meminta port dinamis yang dialokasikan sistem.
itu adalah kebutuhan untuk pemrograman dalam beberapa fungsi
sumber
url.port()
mengembalikan string ... tetapi GURL juga menyediakanurl.has_port()
. Jadi secara teoritis kita bisa membedakanhttp://example.com:/path
(memiliki port, tetapiport()
string kosong) darihttp://example.com/path
(tidak memiliki port). Tentu saja GURL sendiri tidak melakukan ini! Ia bahkan melaporkan bahwahttp://example.com:80/path
"tidak memiliki port," dengan alasan bahwa port yang ditentukan secara eksplisit berlebihan dengan skema. Yang gila , tapi sudahlah ... Intinya,String
tidakOptional
. Jangan menyamakannya.