Комментарии 20
В статье, в первом примере код:
package main
import "fmt"
// Создаем псевдоним для обобщенного типа
type Pair[T any] struct {
First T
Second T
}
func main() {
// Используем Pair с типом int
p1 := Pair[int]{First: 1, Second: 2}
fmt.Println(p1)
// Используем Pair с типом string
p2 := Pair[string]{First: "Hello", Second: "World"}
fmt.Println(p2)
}
Работает и на предыдущих версиях Go, например на 1.23
Так что же тут появилось новго тогда?
Первые же несколько предложений сразу же показались сгенерированными ЛЛМ. И примеры видимо.
До версии Go 1.24 обобщённые псевдонимы типов (type aliases) не поддерживались. В Go 1.24 появилась возможность создавать обобщённые псевдонимы типов. Добавил более понятный пример. Спасибо за обратную связь)
спасибо!
Обновленный код с обебщенными типами из статьи так же работает на предыдущих версиях Go - 1.23.
Вот ссылка на него в playground: https://go.dev/play/p/8m-40tzTNEN
Так что же нового появилось в Go 1.24 в этом плане?
Уже даже такие материалы пишут при помощи убогих генеративных нейросетей :( Мы все умрём!
Это все прекрасно, но где собственно сам релиз?
Тут последний доступный это go1.23.0 (released 2024-08-13)
Вот тут ссылка на оргинальные релиз-ноты. Много интересного написано, что не упомянуто в статье. Например weak-поинтеры, synctest модуль
https://tip.golang.org/doc/go1.24
В Go 1.24 была введена новая метка JSON —
omit0
ну и опять в статье ноль объяснений.
Чтож, мы скоро получим возможность сделать так
type A struct {
B null.String `json:"b,omitzero"`
}
Вероятно теперь это будет превращаться в
{}
в случае если B
содержит NULL.
В текущей версии это превращается в {b:nil}
даже если указано omitempty
Все это будет работать для типов у которых есть фукнция IsZero() bool
Извините, но после заголовка «Усовершенствования синхронизации горутин» перестал понимать, о чем идет речь. Как будто LLM перевела. Например, «Разработчики теперь могут более гибко управлять каналами, использующимися для общения между горутинами, что упрощает организацию сложных многозадачных операций» — как можно более гибко управлять каналами, непонятно. Про Kubernetes вообще как будто «галлюцинирование».
Ну и не "бьется" с https://tip.golang.org/doc/go1.24
Мне одному кажется, что автор и на комменты отвечает как LLM? Вероятно чей-то эксперимент. Кстати мне нравится)
"Новая аннотация omit0"
Открываем официальные release notes тут и смотрим:
"... field with the new omitzero
option ..."
Что за "контейнерные монтируемые тома"? Опять-же, то что касается монтирования томов в официальном релизе можно посмотреть тут.
Перестал понимать о чем и для чего это статья через минуту после начала чтения.
Go 1.24