Forwarded from Усталый АйТишник
Ого, а вот это интересно! GoNB — экспериментальное ядро Go Notebook, которое позволяет запускать код Go в Jupyter Notebook и его вариациях (например, в Google Colab). В отличие от Go Playground и аналогов, которые позволяют запускать го код в онлайне, тут еще наследуются всякие интересные юпитер-ноутбуковские фишки, вроде вывода html, рисования графиков, прогрессбаров и т.п., т.е. можно создавать юпитеровский блокнот (как для Питона) – с описанием, примерами задачек и возможностью сразу проверить результат, может быть полезно для обучения, конспектов и т.д.
Репозиторий и инструкция
Там же есть пример ноутбука на гугл колабе
#GO
Репозиторий и инструкция
Там же есть пример ноутбука на гугл колабе
#GO
🔥24👍9❤3
Go v1.21 - обсуждение важных изменений | GoGetPodcast №10
https://youtu.be/hp0lOyGxpO0
Новый релиз выдался очень интересным, добавился ряд крутых фич. В этом выпуске подробное обсуждение - что добавилось, зачем оно нужно, как с этим работать и др.
Аудио версия:
- Mave
- Apple Podcasts
- Google Podcasts
- Яндекс Музыка
#gogetpodcast #go_release
https://youtu.be/hp0lOyGxpO0
Новый релиз выдался очень интересным, добавился ряд крутых фич. В этом выпуске подробное обсуждение - что добавилось, зачем оно нужно, как с этим работать и др.
Аудио версия:
- Mave
- Apple Podcasts
- Google Podcasts
- Яндекс Музыка
#gogetpodcast #go_release
YouTube
Go v1.21 - Обсуждаем важные изменения | GoGetPodcast №10
Новый релиз выдался очень интересным, добавился ряд крутых фич. Подробно обсуждаем - что добавилось, зачем оно нужно, как с этим работать и др.
Состав:
- Николай Тузов
- Глеб Яльчик - тех. директор компании Gaijin
- Дмтрий Матрёничев - Talos OS Developer…
Состав:
- Николай Тузов
- Глеб Яльчик - тех. директор компании Gaijin
- Дмтрий Матрёничев - Talos OS Developer…
🔥16👍8
Profile-guided optimization in Go 1.21
https://go.dev/blog/pgo
Michael Pratt в статье в официальном блоге Go рассказывает про PGO - что это и как пользоваться.
И самое интересное - он показывает конкретный пример оптимизации приложения.
Полная документация по PGO тут: https://go.dev/doc/pgo
#pgo #go_official
https://go.dev/blog/pgo
Michael Pratt в статье в официальном блоге Go рассказывает про PGO - что это и как пользоваться.
И самое интересное - он показывает конкретный пример оптимизации приложения.
Полная документация по PGO тут: https://go.dev/doc/pgo
#pgo #go_official
go.dev
Profile-guided optimization in Go 1.21 - The Go Programming Language
Introduction to profile-guided optimization, generally available in Go 1.21.
👍5❤2🤯2
Fixing For Loops in Go 1.22
https://go.dev/blog/loopvar-preview
David Chase и Russ Cox в официальном блоге Go рассказывают про проблему LoopVar (переменной цикла) и приводят конкретные примеры, в том числе из реального кейса проекта - Lets Encrypt.
Затем рассказывают, как именно эта проблема решается. Если кратко:
> change for loops to make these variables have per-iteration scope instead of per-loop scope
Как вы помните, эта фича уже есть в Go v1.21, но её нужно включить:
#go_1_22 #go_official
https://go.dev/blog/loopvar-preview
David Chase и Russ Cox в официальном блоге Go рассказывают про проблему LoopVar (переменной цикла) и приводят конкретные примеры, в том числе из реального кейса проекта - Lets Encrypt.
Затем рассказывают, как именно эта проблема решается. Если кратко:
> change for loops to make these variables have per-iteration scope instead of per-loop scope
Как вы помните, эта фича уже есть в Go v1.21, но её нужно включить:
GOEXPERIMENT=loopvar go test
А в версии 1.22 она уже будет работать по-умолчанию#go_1_22 #go_official
go.dev
Fixing For Loops in Go 1.22 - The Go Programming Language
Go 1.21 shipped a preview of a change in Go 1.22 to make for loops less error-prone.
👍18😢5
Deconstructing Type Parameters
https://go.dev/blog/deconstructing-type-parameters
Интересный рассказ про type parameters на примере поэтапного написания собственной реализации функции
Полезно почитать для более глубокого понимания темы
#go_official
https://go.dev/blog/deconstructing-type-parameters
Интересный рассказ про type parameters на примере поэтапного написания собственной реализации функции
Clone[S ~[]E, E any](s S) S
Полезно почитать для более глубокого понимания темы
#go_official
go.dev
Deconstructing Type Parameters - The Go Programming Language
Why the function signatures in the slices packages are so complicated.
👍9
Type Inference - подробный разбор
Everything You Always Wanted to Know About Type Inference - And a Little Bit More
Подробнейшая статья про Type Inference от Robert Griesemer в официальном блоге разработчиков Go.
Type inference — это механизм, при котором компилятор автоматически определяет тип переменной на основе того значения, которое ей присваивается.
В статье разбирается: зачем это нужно, как работает и различные нюансы.
#go_official
Everything You Always Wanted to Know About Type Inference - And a Little Bit More
Подробнейшая статья про Type Inference от Robert Griesemer в официальном блоге разработчиков Go.
Type inference — это механизм, при котором компилятор автоматически определяет тип переменной на основе того значения, которое ей присваивается.
В статье разбирается: зачем это нужно, как работает и различные нюансы.
#go_official
go.dev
Everything You Always Wanted to Know About Type Inference - And a Little Bit More - The Go Programming Language
A description of how type inference for Go works. Based on the GopherCon 2023 talk with the same title.
👍10❤4
Прокачали логгер, теперь взялись за HTTP-роутер
https://eli.thegreenplace.net/2023/better-http-server-routing-in-go-122/
- Proposal
- Документация
Пример кода:
1. В первом хэнделере мы видим явное указание HTTP-метода (GET)
2. Во втором - компонент
За ссылку спасибо @batazor
#go_updates #http #mux
https://eli.thegreenplace.net/2023/better-http-server-routing-in-go-122/
- Proposal
- Документация
Пример кода:
package main
import (
"fmt"
"net/http"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("GET /path/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "got path\n")
})
mux.HandleFunc("/task/{id}/", func(w http.ResponseWriter, r *http.Request) {
id := r.PathValue("id")
fmt.Fprintf(w, "handling task with id=%v\n", id)
})
http.ListenAndServe("localhost:8090", mux)
}
1. В первом хэнделере мы видим явное указание HTTP-метода (GET)
2. Во втором - компонент
{id}
и r.PathValue("id")
для получения значенияЗа ссылку спасибо @batazor
#go_updates #http #mux
👍18❤2🔥2
Шахматный движок на Go
https://github.com/rbw317/chess_go
На мой взгляд, в первую очередь, проект интересен как объект для изучения - движок не самый умный, но и код относительно простой.
Есть простенький консольный интерфейс и полноценный веб-фронтэнд. Демку с веб-версией можно потыкать тут.
Также проект может быть интересен тем, кто хочет потренироваться в написании интерфейсов на разных технологиях. К примеру, можете написать для него оболочку на том же Ebitengine.
#go_project
https://github.com/rbw317/chess_go
На мой взгляд, в первую очередь, проект интересен как объект для изучения - движок не самый умный, но и код относительно простой.
Есть простенький консольный интерфейс и полноценный веб-фронтэнд. Демку с веб-версией можно потыкать тут.
Также проект может быть интересен тем, кто хочет потренироваться в написании интерфейсов на разных технологиях. К примеру, можете написать для него оболочку на том же Ebitengine.
#go_project
GitHub
GitHub - rbw317/chess_go: Chess engine written in Go
Chess engine written in Go. Contribute to rbw317/chess_go development by creating an account on GitHub.
🔥8
Почему `nil error value` не равно nil?
Судя по результатам опроса выше, не все понимают эту механику.
Вот официальный ответ разработчиков на этот вопрос.
Также хорошее объяснение с более сложным примером вы найдёте в книге "Язык программирования Go" Донован А. Керниган Б. (стр. 224 - глава 7, Интерфейсы)
#go_traps
Судя по результатам опроса выше, не все понимают эту механику.
Вот официальный ответ разработчиков на этот вопрос.
Также хорошее объяснение с более сложным примером вы найдёте в книге "Язык программирования Go" Донован А. Керниган Б. (стр. 224 - глава 7, Интерфейсы)
#go_traps
go.dev
Frequently Asked Questions (FAQ) - The Go Programming Language
👍14❤3
Исследование Go-разработчиков от авторов языка
https://go.dev/blog/survey2023-h2-results
Основные результаты:
- Разработчики Go заявили, что они больше заинтересованы в инструментах AI/ML, которые улучшают качество кода, который они пишут, а не пишут код для них. Круглосуточно доступный "ревьюер" может стать одной из наиболее полезных фич ИИ.
- Эксперимент с шаблонами проектов (gonew), похоже, решает критические проблемы Go-разработчиков (особенно новичков в Go). Основываясь на этих результатах, можно сказать что gonew может существенно снизить порог входа в Go для новичков.
- 3/4 респондентов работают над программным обеспечением на Go, которое также использует облачные сервисы; это свидетельствует о том, что разработчики рассматривают Go как язык для современной облачной разработки.
- Настроение разработчиков по отношению к Go остается крайне позитивным: 90% респондентов опроса заявили, что удовлетворены работой с Go в течение предыдущего года.
#survey #go_official
https://go.dev/blog/survey2023-h2-results
Основные результаты:
- Разработчики Go заявили, что они больше заинтересованы в инструментах AI/ML, которые улучшают качество кода, который они пишут, а не пишут код для них. Круглосуточно доступный "ревьюер" может стать одной из наиболее полезных фич ИИ.
- Эксперимент с шаблонами проектов (gonew), похоже, решает критические проблемы Go-разработчиков (особенно новичков в Go). Основываясь на этих результатах, можно сказать что gonew может существенно снизить порог входа в Go для новичков.
- 3/4 респондентов работают над программным обеспечением на Go, которое также использует облачные сервисы; это свидетельствует о том, что разработчики рассматривают Go как язык для современной облачной разработки.
- Настроение разработчиков по отношению к Go остается крайне позитивным: 90% респондентов опроса заявили, что удовлетворены работой с Go в течение предыдущего года.
#survey #go_official
go.dev
Go Developer Survey 2023 H2 Results - The Go Programming Language
What we learned from our 2023 H2 developer survey
👍36🔥10❤6🤔1
Go Tour на стероидах от ArdanLabs
https://www.ardanlabs.com/blog/2024/01/ultimate-go-tour.html
William Kennedy, известный нам по крутым гайдам по внутренностям Go, решил, что официальный Go Tour недостаточно хорош, и предлагает нам свою версию.
Что не нравилось:
- Официальный Тур не является всеобъемлющим как по количеству примеров, так и по содержанию, объясняющему эти примеры
- Содержание практически мгновенно переходит от новичка к эксперту
Вильям поколдовал и получилось это: tour.ardanlabs.com
Лучше оно или хуже - решать вам. Но оно точно стоит внимания.
Возможно, один из самых крутых аспектов этого нового тура заключается в том, что он не контролируется Google. Это дает проекту гибкость, позволяющую вовлечь в него сообщество.
#ardanlabs #go_tour
https://www.ardanlabs.com/blog/2024/01/ultimate-go-tour.html
William Kennedy, известный нам по крутым гайдам по внутренностям Go, решил, что официальный Go Tour недостаточно хорош, и предлагает нам свою версию.
Что не нравилось:
- Официальный Тур не является всеобъемлющим как по количеству примеров, так и по содержанию, объясняющему эти примеры
- Содержание практически мгновенно переходит от новичка к эксперту
Вильям поколдовал и получилось это: tour.ardanlabs.com
Лучше оно или хуже - решать вам. Но оно точно стоит внимания.
Возможно, один из самых крутых аспектов этого нового тура заключается в том, что он не контролируется Google. Это дает проекту гибкость, позволяющую вовлечь в него сообщество.
#ardanlabs #go_tour
Ardan Labs
Ultimate Go Tour
Ardan Labs is trusted by small startups and Fortune 500 companies to train their engineers and develop business software solutions and applications.
🔥41👍9❤7
Range Over Function Types
https://go.dev/blog/range-functions
Подробный пост в официальном блоге разработчиков Go о том, зачем добавили итераторы в Go 1.23, что они из себя представляют, как их использовать, приводят примеры.
#go_official #go_1_23
https://go.dev/blog/range-functions
Подробный пост в официальном блоге разработчиков Go о том, зачем добавили итераторы в Go 1.23, что они из себя представляют, как их использовать, приводят примеры.
#go_official #go_1_23
go.dev
Range Over Function Types - The Go Programming Language
A description of range over function types, a new feature in Go 1.23.
8🔥11👍7 2