Jawaban:
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
func (u * URL) Port () string
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
url.port()
mengembalikan string ... tetapi GURL juga menyediakan url.has_port()
. Jadi secara teoritis kita bisa membedakan http://example.com:/path
(memiliki port, tetapi port()
string kosong) dari http://example.com/path
(tidak memiliki port). Tentu saja GURL sendiri tidak melakukan ini! Ia bahkan melaporkan bahwa http://example.com:80/path
"tidak memiliki port," dengan alasan bahwa port yang ditentukan secara eksplisit berlebihan dengan skema. Yang gila , tapi sudahlah ... Intinya, String
tidak Optional
. Jangan menyamakannya.