Я все ще спантеличений питанням, чому ми маємо new
в Go.
Коли ви хочете створити структуру, ви зробите це
t := Thing{}
і ви можете отримати вказівник на новий екземпляр, виконавши
t := &Thing{}
Але є також така можливість:
t := new(Thing)
Цей останній здається трохи чужим для решти мови. &Thing{}
настільки ж чітка і лаконічна, new(Thing)
і вона використовує лише конструкції, які ви часто використовуєте в інших місцях. Він також більш розширюваний, оскільки ви можете змінити його на &Thing{3}
або &Thing{Feets:7}
.
На мою думку, наявність додаткового ключового слова 1 є дорогим, це робить мову більш складною і додає до того, що ви повинні знати. І це може замаскувати новачків, що стоїть за створенням структури.
Це також робить ще одне застережене слово.
То які міркування за цим new
? Це іноді корисно? Чи повинні ми його використовувати?
1 : Так, я знаю, що це не ключове слово на рівні граматики, ви можете відтінити його , але це не змінює факту, це для розумного розробника - зарезервоване слово.