Phương thức Port
trả về một chuỗi chứ không phải số nguyên. Lý do cho điều đó là gì và có an toàn không để tiền tố cổng với ":"?Tại sao cổng một chuỗi chứ không phải số nguyên?
96
A
Trả lời
140
Điều này là do những gì xuất hiện sau dấu hai chấm có thể là số cổng hoặc tên dịch vụ.
Sau đây là một ví dụ hợp lệ nơi tên dịch vụ được sử dụng thay vì một số cổng:
listener, err := net.Listen("tcp", "localhost:https") // port 443
// ...
Việc lập bản đồ cổng cho một dịch vụ cụ thể được xem xét bằng cách sử dụng net.LookupPort
. Trên các hệ thống Unix, tệp /etc/services
có nguồn gốc cho các ánh xạ.
1
Đối với một số giá trị mặc định là 0: nếu một hàm
func (u * URL) Port() string
số lợi nhuận thay vì chích cảng sẽ là 0
Port 0 là một cổng dành riêng trong mạng TCP/IP, có nghĩa nó không nên được sử dụng trong các thông điệp TCP hoặc UDP. Tuy nhiên, cổng 0 mang ý nghĩa đặc biệt trong lập trình mạng, đặc biệt là lập trình socket Unix: để yêu cầu các cổng động, được cấp phát theo hệ thống.
cần lập trình ở một số chức năng
Các vấn đề liên quan
- 1. int() lập luận phải là một chuỗi hoặc một số, chứ không phải 'SimpleLazyObject'
- 2. Tại sao Đếm không phải là số nguyên không dấu?
- 3. FBConnect: Tại sao nó hiển thị trên một số trang chứ không phải trang khác?
- 4. Tại sao một số mảng có thể được xuất bản chứ không phải các mảng khác?
- 5. Tại sao lại là MonadPlus chứ không phải Monad + Monoid?
- 6. Tại sao Windows.Forms trong Hệ thống chứ không phải Microsoft?
- 7. Tại sao sử dụng argparse chứ không phải là optparse?
- 8. Tại sao UnhandledExceptionEventArgs.ExceptionObject đối tượng chứ không phải ngoại lệ?
- 9. Tại sao bằng "-eq" trong PowerShell chứ không phải chỉ "="?
- 10. Rails + UUID tạo lược đồ giả định UUID là một số nguyên chứ không phải là một chuỗi
- 11. Tại sao clang lấy một chuỗi ký tự như một con trỏ chứ không phải là một mảng?
- 12. Tại sao Scalas không phải là một đơn nguyên?
- 13. Tại sao InputStream # read() trả về một int chứ không phải một byte?
- 14. chỉ số python, Json và chuỗi phải là số nguyên, không phải là số nguyên
- 15. Tại sao số inode bắt đầu từ 1 chứ không phải 0?
- 16. Tại sao 'this' là một con trỏ chứ không phải là một tham chiếu?
- 17. Tại sao tôi có thể cập nhật một lát danh sách chứ không phải một lát chuỗi trong python?
- 18. Tại sao một python regex sẽ biên dịch trên Linux chứ không phải Windows?
- 19. Tại sao dict.keys của Python() trả về một danh sách chứ không phải một bộ?
- 20. Tại sao một chữ bát phân không phải là một chuỗi ký tự thành một số?
- 21. Tại sao sàn không trả về một số nguyên?
- 22. Tại sao chương trình sẽ biên dịch cho tôi chứ không phải cho một người khác?
- 23. Mysql chọn thứ tự theo các hành vi như một chuỗi chứ không phải số
- 24. Tại sao -1001 không phải là một số nguyên Java hợp lệ?
- 25. Tại sao instance_eval lại thành công với một Proc chứ không phải với Lambda?
- 26. Tại sao ping hoạt động trên một số thiết bị chứ không phải các thiết bị khác?
- 27. Tại sao traceroute gửi gói UDP chứ không phải gói ICMP?
- 28. Pandas drop_duplicates - TypeError: nhập đối số đối tượng sau * phải là một chuỗi, chứ không phải bản đồ
- 29. kiểm tra nếu một biến là một nguyên thủy chứ không phải là một đối tượng?
- 30. Tại sao C++ cho phép một số nguyên được gán cho một chuỗi?
Tôi luôn bị hấp dẫn bởi kiểu phân loại kiểu mở/đóng. Tôi muốn thấy thứ gì đó giống như một loại _mixed_ trong đó có một số giá trị mặc định (ở đây ví dụ: các cổng và dịch vụ nổi tiếng) nhưng cũng cho phép mở rộng chúng, cuối cùng là hỗ trợ tự động hoàn thành. Trong kiến thức làm việc hạn chế của tôi TypeScripts ADTs đến gần nhất, có thể Swifts ADTs có thể thể hiện điều này cũng trực tiếp. –