Triển khai thuật toán cân bằng trong Golang 1.18 Generic Style
Một thời gian dài trước đây ...
Chúng tôi đã gặp phải các chức năng triển khai dư thừa để đáp ứng các yêu cầu của chúng tôi
Ví dụ:
Chúng tôi muốn triển khai một hàm Min-Max chuyển đối số 2 số sau đó trả về giá trị tối thiểu hoặc tối đa trở lại kết quả như thế này.

nhưng phiên bản trước của Golang (cũ hơn 1.18) không cho phép chúng tôi làm như vậy, chúng tôi phải chỉ định kiểu chính xác như uint, int, float, float64. Tôi đoán bạn có thể tưởng tượng nó phức tạp như thế nào? Đó là bạn phải triển khai tất cả các loại có thể có mà bạn có thể quan tâm
Bây giờ chúng ta hãy xem xét gói tiêu chuẩn mà Golang cung cấp trong gói toán học

Cái quái gì vậy! không có Max-Min cho uint, int64, v.v.…
Chúng ta phải chuyển tất cả các loại vào float64, điều đó hoàn toàn vô nghĩa!
Hãy tự mình thực hiện nó!

Ôi Chúa ơi! nó dễ đọc và linh hoạt hơn, phải không?
Bây giờ chúng ta hãy chuyển sang chủ đề chính của chúng ta với tiêu đề “ Triển khai thuật toán cân bằng trong kiểu chung Golang 1.18 ”
Chúng tôi muốn thực hiện một thuật toán cân bằng như vòng lặp, ít kết nối nhất và chúng tôi muốn chuyển bất cứ thứ gì muốn cân bằng không chỉ Máy chủ mà là những thứ chúng tôi muốn.
Đầu tiên, chúng tôi triển khai một thuật toán tổng hợp

Tôi khá chắc rằng bạn có thể tò mò cái quái gì getZero [T] ()
Trong các dòng, 22–26 chỉ cần kiểm tra xem ngữ cảnh có bị vượt quá hay không nếu đã vượt quá. Tôi muốn trả về giá trị nil như một biến đầu tiên và chính xác là lỗi như một biến thứ hai
nhưng chúng tôi sử dụng một kiểu chung có nghĩa là chúng tôi không thể trả về nil, vì vậy tôi đã tạo một hàm sơ khai đại diện cho nil

Ồ, chờ đã! cái quái gì vậy ??? Nó có tương tự với Any in typecript không ?????
Hãy xem cách triển khai tiêu chuẩn trong Golang

Hahaha nó chỉ là một bí danh của giao diện {}
Bây giờ hãy triển khai kết nối ít nhất

Theo quan điểm của tôi, nó phức tạp hơn so với cách tiếp cận vòng tròn. Tuy nhiên, đó không phải là ý chính của bài viết này.
Bây giờ triển khai giao diện LoadBalancer

Nó khá rõ ràng, phải không?
Ví dụ dưới đây


Cảm ơn bạn đã đọc. Chúc bạn viết mã vui vẻ