Share & grow the worlds knowledge!
We want to connect the people who have knowledge to the people who need it, to bring together people with different perspectives so they can understand each other better, and to empower everyone to share their knowledge.
1 Answer
- Khi biên dịch sẽ bỏ hết generic type đi, và ở runtime sẽ ép kiểu sau (như java): cách này thì biên dịch sẽ không sinh ra lớp mới, tuy nhiên là sẽ bị tốn performance khi ép kiểu.
- Khi biên dịch sẽ giữ lại generic type, ví dụ như List thì sẽ dịch thành ListInt hoặc List sẽ dịch thành ListString (C
hãy C++ đang làm vậy)
Tuy nhiên với go thì mình không thấy có kiểu basic kiểu java.lang.Object, vậy thì làm theo kiểu 1 thì cũng không được, vì không có basic type thì sau ép kiểu kiểu gì nhỉ?
Tiếp theo nữa là cái kiểu viết hàm của go sẽ kiểu func (bz HexBytes) MarshalJSON() ([]byte, error) {
nếu viết generic type sẽ kiểu này: func (bz T) MarshalJSON() ([]byte, error) {
Vậy thì nếu dịch theo kiểu 2 thì chẳng lẽ sẽ địch cho mọi đối lớp có trong chương trình sao?
Vậy nên mình nghĩ rằng generics sẽ là 1 cơn đau đầu không dễ chịu cho tác giả của go, và nếu có viết thì chắc sẽ phải chọn phương án 1.
-
1
- Reply
- Questions 1.0K
- Answers 2.2K
- Best Answers 131
- Users 486
Related Questions
Recent Activities
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm
-
Voted up question. January 9, 2023 at 2:54 pm