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/servicesfile 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, Stringtidak Optional. Jangan menyamakannya.