Interface là gì?
Thuộc phần Logic và luồng điều khiển trong hành trình GO của Coddy. Bài học 12 trên 68.
Interface trong Go giống như một hợp đồng xác định một kiểu dữ liệu phải có những hành vi nào, mà không quy định cách triển khai những hành vi đó. Bạn có thể hình dung interface là một tập hợp các chữ ký phương thức mô tả những gì một thứ có thể làm.
Để hiểu rõ hơn về giao diện, hãy tưởng tượng một ổ cắm điện trong nhà bạn.
Ổ cắm có hình dạng cụ thể và cung cấp điện, nhưng nó không quan tâm bạn cắm thiết bị nào vào. Dù đó là đèn, bộ sạc điện thoại hay máy tính, bất kỳ thiết bị nào có phích cắm phù hợp đều có thể kết nối và nhận điện. Ổ cắm xác định “giao diện”, tức là các yêu cầu để kết nối.
Trong Go, interface cũng hoạt động tương tự. Interface định nghĩa một tập hợp chữ ký phương thức mà một kiểu dữ liệu phải có để “kết nối” với interface đó. Bất kỳ kiểu dữ liệu nào có đủ các phương thức bắt buộc đều tự động đáp ứng interface, bất kể kiểu dữ liệu đó còn làm gì khác hoặc triển khai các phương thức ấy như thế nào.
Khái niệm này rất hữu ích vì nó cho phép bạn viết code hoạt động với mọi kiểu dữ liệu có thể thực hiện một số hành vi nhất định, giúp chương trình linh hoạt và có thể tái sử dụng hơn. Cũng như nhiều thiết bị khác nhau đều có thể dùng chung một ổ cắm điện, các kiểu dữ liệu Go khác nhau đều có thể thỏa mãn cùng một interface, miễn là chúng có đủ các phương thức cần thiết.
Tự làm thử
Bài học này không có thử thách code.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng điều khiển
1Luồng điều khiển nâng cao
Switch với `fallthrough`Thoát khỏi vòng lặp lồng nhauTiếp tục một vòng lặp cụ thểCâu lệnh `goto`Ôn tập: điều khiển vòng lặp nâng cao4Dự án: Danh sách việc cần làm đơn giản
Thiết lập dự ánThêm một việc cần làm2Struct và phương thức
Định nghĩa phương thức cho structReceiver giá trịReceiver con trỏChọn receiverPhương thức và hàmÔn tập: hành vi của struct5Tìm hiểu chuyên sâu về map
Map chứa structCon trỏ làm giá trị của mapKiểm tra map nilSo sánh các mapÔn tập: bộ đếm tần suất từ8Dự án: Quản lý hàng tồn kho đơn giản
Tổng quan dự ánKiểm tra hàng tồn kho3Interface (cơ bản)
Interface là gì?Định nghĩa interfaceTriển khai interfaceDùng kiểu interfaceInterface rỗngKhẳng định kiểuType switchÔn tập: hình dạng và hành viTự luyện tập: Trình biên dịch Go online