Вот что вам нужно знать о Go 1.22

Вот что вам нужно знать о 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.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE