TGViewer
Cross Join - канал о разработке Cross Join - канал о разработке @crossjoin · 3.82K subscribers
Post #564 3.29K
В go 1.26 расширяют оператор new, теперь туда можно будет передать число, и получить ссылку. Как по мне, очень странное решение.


age := new(42)


Для начала, для чего вообще это нужно?

Это нужно,чтобы передать конкретное значение в поле, которое принимает ссылочный тип. Например, необязательное поле в json-структуре в Go обычно делают как ссылку на значение, которая может быть nil.



type User struct {
name string
age *int
}


А надо передать в него 42. И вот сделали для этого new(42).



user := User{
name: "vasya",
age: new(42),
}


Но зачем, блин, для этого использовать new?

Оператор new и в предыдущих версиях максимально странный. Всё что он может - это делать ссылку на zero value типа, который в него передали. Если написать

 go
a := new(int)


это всё равно, что


var x int = 0
a = &x


Для структур тоже самое. Но довольно редко кому то нужна ссылка на 0. А на пустую структуру все обычно делают ссылку явно &User{} (для единообразия), а не new(User). Есть некоторые очень редкие кейсы с дженериками, где нужен именно new, но это прям надо постараться.

И вот они взяли и разрешили делать new(42), чтобы получить ссылку на 42.

Как по мне они к почти бесполезной хрени, которая и так вызывает вопросы у новичков, добавили костыль. Костыль - потому что теперь в аргумент внезапно передается не тип, а некое значение.

Лучше бы просто в стандартной библиотеке сделали какую-нибудь функцию ptr(). Она пишется за минуту, и есть в каждом, наверно, проекте:


func Ptr[T any](v T) *T {
return &v
}


А еще лучше бы не занимались такими мелочами, а улучшили бы синтаксис обработки ошибок 🙂

🫥 Cross Join - канал о разработке
⠀
  • 👍 15
  • 🥴 10
  • 👎 4
  • ❤ 2
  • 💯 2
More from @crossjoin
  1. Sep 29, 2026😱 Отправили свое резюме на 129 вакансий на хх, а в ответ тишина .. Думаете, что дело в ры…
  2. Sep 28, 2026Слышал недавно в каком-то подкасте мысль, что Haskell плохо подходит для вайбкодинга прост…
  3. Sep 26, 2026Антон Жиянов написал мини-книгу по Go-concurrency. Это что-то вроде плотного конспекта с и…
  4. Sep 22, 2026photo post
  5. Sep 14, 2026Поможем Руслану собрать фидбек. Проект некоммерческий 👆
  6. Sep 14, 2026AGBX (Agent Box) — небольшой open-source CLI для запуска Claude Code и Codex в изолированн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →