Cách tốt nhất để hỏi có lẽ là với những người làm việc trên nó; chính xác những gì tôi đã làm !
Tl; dr: nó đã được ban có trước make
và &{}
, và nó vẫn còn chức năng để sử dụng trong một số trường hợp.
Về cơ bản, đây là những phần quan trọng nhất được trích dẫn:
Vậy lý do đằng sau mới là gì? Nó có phải là một cái gì đó hữu ích? Chúng ta có nên sử dụng nó?
Bạn không thể làm điều này mà không có mới
v := new(int)
*v++
fmt.Println(*v)
mới không phải là một tính năng tiêu đề của Go, bạn sẽ không thấy nó được sử dụng thường xuyên, nhưng khi bạn cần nó, nó sẽ ở đó.
Chúc mừng
Dave
Sau một câu trả lời khác cho thấy loại giải pháp này:
vv := 0
v := &vv
*v++
fmt.Println(*v)
Tôi yêu cầu làm rõ thêm:
Vì vậy, về cơ bản, quan điểm của Dave không thực sự đứng vững?
Có những nơi thật bất tiện khi lẻn vào một biến mới chỉ để lấy địa chỉ của nó.
new (T) có nghĩa đơn giản ngay lập tức, thay vì là một thành ngữ gồm nhiều bước.
Quan điểm của Dave chỉ giảm nếu khả năng kỹ thuật đơn thuần (thực hiện mà không có
new
) là hấp dẫn.
Không phải điều này đã được thảo luận bởi vì rõ ràng là Go nên có nó bởi vì hầu hết mọi ngôn ngữ đều có nó?
"Chúng ta sẽ giữ new
?" thảo luận bật lên theo thời gian. Vì chúng ta không thể lấy nó ra cho đến khi đi 2, nếu tôi hiểu đúng về Lời hứa, dường như không có gì nhiều để đi vòng vòng một lần nữa; vào thời điểm Go 2 có thể nghĩ được, chúng ta có thể có một số ý tưởng khác biệt và tốt hơn ...
Chris
Nó cũng chủ yếu là vì lý do lịch sử:
bạn cần xem xét lịch sử của dự án. Tôi nghĩ rằng mới được giới thiệu đầu tiên trước khi có.
Điều đó đúng. Trong thực tế, chúng tôi đã đấu tranh một thời gian trước khi đưa ra ý tưởng thực hiện. Nếu bạn nhìn vào nhật ký kho lưu trữ, bạn có thể thấy nó chỉ hiển thị vào tháng 1 năm 2009, bản sửa đổi 9a924177598f.
Hàm dựng sẵn mới cũng đi trước ý tưởng về & {} để lấy địa chỉ của một chữ hỗn hợp (và cú pháp đó theo một nghĩa nào đó là sai; có lẽ phải là (* T) {các trường của T} nhưng không đủ lý do để thay đổi nó).
Hàm mới không thực sự cần thiết nhưng mã dường như sử dụng nó trong thực tế. Tại thời điểm này thật khó để thoát khỏi nó.
Ian