
Вот что вам нужно знать о Go 1.22
16 июня 2025 г.Сегодня команда GO очень рада выпустить GO 1.22, который вы можете получить, посетивСтраница загрузкиПолем
GO 1.22 поставляется с несколькими важными новыми функциями и улучшениями. Вот некоторые из заметных изменений; Для полного списка см.выпуск заметокПолем
Языковые изменения
Давняя петля «для» Gotcha с случайным разделением переменных петлей между итерациями в настоящее время разрешено. Начиная с GO 1.22, в некотором порядке будет напечатан следующий код «A», «B» и «C»:
func main() {
done := make(chan bool)
values := []string{"a", "b", "c"}
for _, v := range values {
go func() {
fmt.Println(v)
done <- true
}()
}
// wait for all goroutines to complete before exiting
for _ = range values {
<-done
}
}
Для получения дополнительной информации об этом изменении и инструментах, который помогает не разорвать код случайно, см. РаннееПост в блоге с петлейПолем
Второе изменение языка является поддержкой для проведения целых чисел:
package main
import "fmt"
func main() {
for i := range 10 {
fmt.Println(10 - i)
}
fmt.Println("go1.22 has lift-off!")
}
Значенияi
В этой программе обратного отсчета перейдет от 0 до 9, включительно. Для получения более подробной информации, пожалуйста, обратитесь кСпецПолем
Улучшенная производительность
Оптимизация памяти во время выполнения GO повышает производительность процессора на 1-3%, а также снижение накладных расходов на память большинства программ GO примерно на 1%.
В Go 1.21,Мы отправилисьОптимизация под руководством профиля (PGO) для компилятора GO, и эта функциональность продолжает улучшаться. Одной из оптимизаций, добавленной в 1.22, является улучшенная девиртуализация, что позволяет статической диспетчеры большего количества вызовов метода интерфейса. Большинство программ увидят улучшения между 2-14% с включенным PGO.
Стандартные библиотечные дополнения
НовыйМатематика/Рэнд/V2Пакет обеспечивает более чистый, более последовательный API и использует более качественные, более быстрые алгоритмы генерации псевдолудочков. ВидетьпредложениеДля получения дополнительной информации.
Узоры, используемыеnet/http.servemuxТеперь принимайте методы и подстановочные знаки.
Например, маршрутизатор принимает образец, подобный
GET /task/{id}/
, что соответствует толькоGET
запросы и захватывает стоимость{id}
сегмент на карте, к которой можно получить черезЗапросценности.Новый
Null[T]
тип вБаза данных/SQLПредоставляет способ сканировать нулевые столбцы.А
Concat
Функция была добавлена в упаковкесрезы, чтобы объединить несколько срезов любого типа.
Спасибо всем, кто внес свой вклад в этот релиз, написав код и документацию, подав ошибки, обмениваясь обратной связью и тестировав кандидатов на релиз. Ваши усилия помогли обеспечить, чтобы GO 1.22 были максимально стабильными. Как всегда, если вы заметили какие -либо проблемы, пожалуйстаподать проблемуПолем
Наслаждайтесь Go 1.22!
Эли Бендерский, от имени команды GO
ФотоПавел ЧервинскинаНеспособный
Эта статья доступна наБлог GOПод CC по лицензии 4,0.
Оригинал