Пакет net/url в Golang

Пакет url анализирует URL-адреса и реализует экранирование запросов.

https://golang-blog.blogspot.com/2021/09/net-url-package-in-golang.html
Пустой интерфейс в Golang

Пустой интерфейс может использоваться для хранения любых данных, и он может быть полезным параметром, поскольку может работать с любым типом.

https://golang-blog.blogspot.com/2021/10/empty-interface-in-golang.html
Go для Java разработчиков: Hello world пример

В постах Go для Java разработчиков будут представлены основные отличия Go для быстрого освоения Java разработчиками.

Начнем с небольшого, но полного примера. Он показывает, как реализовать и использовать простой абстрактный тип данных в Go.

https://golang-blog.blogspot.com/2021/10/go-for-java-developers-hello-world.html
Go для Java разработчиков: основные отличия Go

Объектно-ориентированное программирование

* В Go нет классов с конструкторами. Вместо методов экземпляра, иерархии наследования классов и поиска динамических методов Go предоставляет структуры и интерфейсы.

* Go позволяет использовать методы любого типа; упаковка не требуется. Получатель метода, который соответствует this в Java, может быть прямым значением или указателем.

https://golang-blog.blogspot.com/2021/10/go-for-java-developers-go-diffs.html
Go для Java разработчиков: синтаксис

Декларации

Синтаксис объявления обратный по сравнению с Java. Вы пишете имя, а затем тип. Объявления типов можно легко читать слева направо.

https://golang-blog.blogspot.com/2021/11/go-for-java-developers-syntax.html
Go для Java разработчиков: константы, структуры, указатели

Константы
В Go константы могут быть нетипизированными. Это относится к

- числовым литералам,
- выражениям, использующим только нетипизированные константы,
- и объявлениям const, в которых тип не указан, а выражение инициализатора не типизировано.

https://golang-blog.blogspot.com/2021/11/go-for-java-developers-constants-structs-pointers.html
Go для Java разработчиков: срезы, создание значений

Срез - это концептуально структура с тремя полями:

* указатель на массив,
* длина,
* и емкость

https://golang-blog.blogspot.com/2021/11/go-for-java-developers-slices.html
Go для Java разработчиков: методы и интерфейсы

Метод выглядит как обычное определение функции, за исключением того, что у него есть получатель. Получатель аналогичен ссылке this в методе экземпляра Java.

type MyType struct { i int }

func (p *MyType) Get() int {
return p.i
}

var pm = new(MyType)
var n = pm.Get()


https://golang-blog.blogspot.com/2021/11/go-for-java-developers-methods-interfaces.html
Go для Java разработчиков: ошибки, паника и восстановление

Там, где Java обычно использует исключения, Go имеет два разных механизма:

- большинство функций возвращают ошибки;
- только действительно невосстановимые условия, такие как индекс вне допустимого диапазона, создают исключения во время выполнения.

https://golang-blog.blogspot.com/2021/11/go-for-java-developers-errors-panic-recover.html
Go для Java разработчиков: горутины и каналы

Go позволяет запустить новый поток выполнения, горутину (goroutine), с помощью оператора go. Он запускает функцию в другой, недавно созданной горутине. Все горутины в одной программе используют одно и то же адресное пространство.

https://golang-blog.blogspot.com/2021/11/go-for-java-developers-goroutines-channels.html
Релиз Go 1.18

Релиз Go, версия 1.18, является важным релизом, включающим изменения в языке, реализации цепочки инструментов, среды выполнения и библиотек.

https://golang-blog.blogspot.com/2022/04/release-golang-1-18.html
Введение в использование дженериков в Golang

В релизе Go 1.18 добавлена поддержка дженериков. Дженерики — это самое большое изменение, которое было внесено в Go с момента первого релиза с открытым исходным кодом. В этом посте вы познакомитесь с новыми функциями языка. Мы не будем пытаться охватить все детали, но затронем все важные моменты.

Дженерики — это способ написания кода, который не зависит от используемых конкретных типов. Функции и типы теперь могут быть написаны для использования любого набора типов.

https://golang-blog.blogspot.com/2022/05/generics-intro.html
Начало работы с дженериками в Golang

В этом руководстве представлены основы дженериков в Go. С помощью дженериков вы можете объявлять и использовать функции или типы, которые написаны для работы с любым из набора типов, предоставляемых вызывающим кодом.

В этом руководстве вы объявите две простые неуниверсальные функции, а затем зафиксируете ту же логику в одной универсальной функции.

https://golang-blog.blogspot.com/2022/05/getting-started-generics.html
Начало работы с фаззингом в Golang

В этом посте представлены основы фаззинга в Go. При фаззинге случайные данные обрабатываются для вашего теста в попытке найти уязвимости или входные данные, вызывающие сбой. Некоторыми примерами уязвимостей, которые можно найти с помощью фаззинга, являются SQL-инъекции, переполнение буфера, отказ в обслуживании и атаки с использованием межсайтовых сценариев.

https://golang-blog.blogspot.com/2022/09/fuzzing-intro.html
Релиз Go 1.19

Релиз Go, версия 1.19, выходит через пять месяцев после Go 1.18.
Большинство его изменений касаются реализации цепочки инструментов, среды выполнения и библиотек.

https://golang-blog.blogspot.com/2022/09/release-golang-1-19.html
Релиз Go 1.20

Релиз Go, версия 1.20, вышел через шесть месяцев после Go 1.19. Большинство его изменений касаются реализации цепочки инструментов, среды выполнения и библиотек.
Есть также четыре изменения в языке.

https://golang-blog.blogspot.com/2023/02/release-golang-1-19.html
Релиз Go 1.21

Go 1.21 добавляет в язык три новых встроенных модуля.

- Новые функции min и max вычисляют наименьшее (или наибольшее для max) значение фиксированного числа заданных аргументов.
- Новая функция clear удаляет все элементы с карты или обнуляет все элементы среза.

Большинство изменений релиза касаются реализации цепочки инструментов, среды выполнения и библиотек. Улучшена работа с универсальными типами (определенно Golang продолжает догонять Java с ее дженериками :)) )

Добавлены несколько новых пакетов: log/slog, testing/slogtest, cmp, slices, maps. Последние два пакета хотелось бы отметить отдельно - как прототипы Java Collections Framework для Golang.

https://golang-blog.blogspot.com/2023/08/release-golang-1-21.html
Релиз Go 1.22

Изменения в языке

Go 1.22 вносит два изменения в циклы for.

- Раньше переменные, объявленные в цикле for, создавались один раз и обновлялись на каждой итерации. В Go 1.22 каждая итерация цикла создает новые переменные, чтобы избежать случайных ошибок совместного использования.

- Циклы for теперь могут охватывать целые числа. Например:

package main

import "fmt"

func main() {
for i := range 10 {
fmt.Println(10 - i)
}
fmt.Println("go1.22 has lift-off!")
}

https://golang-blog.blogspot.com/2024/05/release-golang-1-22.html
Релиз Go 1.23

Изменения в языке

Go 1.23 делает эксперимент (Go 1.22) "range-over-func" частью языка. "range" в цикле "for-range" теперь принимает функции итератора следующих типов

func(func() bool)
func(func(K) bool)
func(func(K, V) bool)


как выражения диапазона. Вызовы функции аргумента итератора создают значения итерации для цикла "for-range".

https://golang-blog.blogspot.com/2024/08/release-golang-1-23.html
Релиз Go 1.24

Большинство изменений в нем касаются реализации цепочки инструментов, среды выполнения и библиотек.

https://golang-blog.blogspot.com/2025/03/release-golang-1-24.html