나는 왜 우리가 new
Go에 있는지에 대해 여전히 의아해 합니다.
구조체를 인스턴스화하고 싶을 때
t := Thing{}
그리고 당신은 새로운 인스턴스에 대한 포인터를 얻을 수 있습니다
t := &Thing{}
그러나이 가능성도 있습니다.
t := new(Thing)
이 마지막 언어는 나머지 언어에 약간 외계인처럼 보입니다. &Thing{}
명확하고 간결하며 new(Thing)
다른 곳에서 자주 사용하는 구문 만 사용합니다. &Thing{3}
또는로 변경할 수 있으므로 확장 성이 뛰어납니다 &Thing{Feets:7}
.
내 생각에, 보충 키워드 1을 갖는 것은 비용이 많이 들고, 언어를 더 복잡하게 만들고 알아야 할 것을 추가합니다. 그리고 그것은 구조화 인스턴스화의 배후에있는 새로운 이민자에게 가면을 감출 수 있습니다.
또한 예약어를 하나 더 만듭니다.
뒤에 추론은 new
무엇입니까? 때때로 유용합니까? 우리는 그것을 사용해야합니까?
1 : 예, 문법 수준의 키워드가 아니라는 것을 알고 있습니다. 섀도 잉 할 수는 있지만 합리적인 개발자에게는 예약어라는 사실이 바뀌지 않습니다.