Khi thực hiện final exercise of the Tour of Go, tôi quyết định tôi cần một hàng đợi (string
, int
) cặp. Điều đó thật dễ dàng:Loại dữ liệu cặp/tuple trong Go
type job struct {
url string
depth int
}
queue := make(chan job)
queue <- job{url, depth}
Nhưng điều này khiến tôi nghĩ: có các kiểu dữ liệu cặp/tuple tích hợp trong Go? Có hỗ trợ cho returning multiple values từ một hàm, nhưng AFAICT, các giá trị nhiều bộ dữ liệu được tạo ra không phải là công dân hạng nhất trong hệ thống kiểu của Go. Đó là trường hợp?
Đối với "những gì đã bạn đã cố gắng" một phần, cú pháp rõ ràng (từ POV một Python lập trình viên của)
queue := make(chan (string, int))
đã không làm việc.
Bạn có lẽ nên mô tả cách lấy các giá trị ra khỏi thành viên cấu trúc ẩn danh vì tôi không nghĩ rằng điều đó hiển nhiên đối với người mới bắt đầu! –
tuy nhiên, điều này sẽ không hoạt động nếu có nhiều trường có cùng kiểu – newacct
Bạn có thể có các trường có tên trong cấu trúc ẩn danh, bạn chỉ cần đảm bảo rằng các trường được đặt tên theo cùng một cách mà mỗi định nghĩa struct ẩn danh xuất hiện (ba lần trong ví dụ này.) Các trường ẩn danh dễ dàng hơn nếu bạn có thể thoát khỏi nó. – Sonia