Golang digest
https://t.me/+fKYUPHs1PCBmYWJi - ссылка на канал admin - @haarrp https://t.me/Golang_google - Golang разработка https://t.me/golangl - чат https://t.me/golangtests https://t.me/ai_machinelearning_big_data машинное обучение @itchannels_telegram
إظهار المزيد2 911
المشتركون
لا توجد بيانات24 ساعات
+157 أيام
+13330 أيام
- المشتركون
- التغطية البريدية
- ER - نسبة المشاركة
جاري تحميل البيانات...
معدل نمو المشترك
جاري تحميل البيانات...
👩💻 Sync.Pool в деталях: продолжение серии статей Phuong Le про сложные аспекты Go на простых иллюстрациях
☑️ Как sync.Pool связан с планировщиком или моделями PMG?
☑️ Что такое проблема false sharing?
☑️ Как устроен sync.Pool?
☑️ Как работает механизм «кражи» sync.Pool?
☑️ Почему «Любой элемент, хранящийся в пуле, может быть автоматически удален в любое время без уведомления»?
👉 Читать
⚡ 2🏆 1
473320
👩💻 Range Over Function Types в Go 1.23
Текстовая версия выступления Ian Lance Taylor на GopherCon 2024 о том, почему эта фича была добавлена, что из себя представляет и как ее использовать.
👉 Читать
Range Over Function Types - The Go Programming Language
A description of range over function types, a new feature in Go 1.23.
❤ 1
60190
Photo unavailable
👩💻 Go sync.WaitGroup и проблема выравнивания: продолжение серии статей Phuong Le про сложные аспекты Go на простых иллюстрациях
Интересно даже не то, как работает sync.WaitGroup, а то, как менялась его структура на протяжении многих версий.
👉 Читать
🔥 2
986240
Photo unavailable
👩💻🔥 Представлена новая версия TinyGo
TinyGo — это фантастическая реализация Go на основе LLVM, ориентированная на микроконтроллеры и WebAssembly. Версия 0.33.0 приводит инструмент в соответствие со стандартами Go 1.23, добавляет поддержку WASI preview 2 и многое другое.
👉 Подробнее
👍 1
1 177100
Интерпретатор Golang, написанный на PHP
https://github.com/tuqqu/go-php
#golang #php #программирование
GitHub - tuqqu/go-php: Toy Golang interpreter written in PHP
Toy Golang interpreter written in PHP. Contribute to tuqqu/go-php development by creating an account on GitHub.
😁 15👍 2
1 221170
Вы наверняка знакомы со «стандартным» способом ветвления кода в зависимости от заданного значения:
switch a {
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
default:
fmt.Println("default")
}
Так работает switch
в Go и во многих других языках (за исключением того, что в Go не происходит перехода к последующим case
).
Но оператор switch
может делать больше. Вот несколько кейсов.
1. Несколько значений в одном case
.
В case
можно указать несколько значений для сопоставления:
switch a {
case 1:
fmt.Println("1")
case 2, 3, 4:
fmt.Println("2, 3 или 4")
// case 1,2: // ошибка: дублирование case 1, дублирование case 2
// fmt.Println("1 или 2")
}
Заданное значение может использоваться только в одном блоке case
. Дублирование значений в case
вызовет ошибку.
2. Инициализатор, как в цикле for
.
Вы можете инициализировать значение перед использованием его в switch
. Область видимости переменной a
ограничена конструкцией switch
:
switch a := f(); a {
case 1:
fmt.Println("1")
case 2:
fmt.Println("2")
}
3. Нет выражения switch
, но есть выражения case
.
case
не ограничен статическими значениями. Если вы опустите выражение switch
, вы можете использовать выражения для каждого case
:
switch {
case a == 1:
fmt.Println("1")
case a >=2 && a <= 4:
fmt.Println("2")
case a <= 5:
fmt.Println("3")
}
Если текущее значение a
совпадает более чем с одним case
, выбирается первый подходящий.
4. Переключение по типу переменной.
Если ваш код получает значение интерфейса из какого-то источника, вы можете использовать переключение по типу, чтобы проверить фактический тип этого значения:
switch v := a.(type) {
case int:
fmt.Println("a — это int:", v)
case string, []byte:
fmt.Println("a — это string:", v)
}
5. Переключение по типу параметра.
Это может показаться немного эзотерическим: вы можете определить дженерик функцию, где типовой параметр не используется в списке параметров. Вместо этого оператор switch
может ссылаться на этот параметр, чтобы проверить значение параметра:
func do[T comparable](a any) {
switch v := a.(type) {
case int:
fmt.Println("a — это int:", v)
case T:
fmt.Printf("a — это %T: %v", v, v)
case []T:
fmt.Println("a — это срез:", v)
case []byte:
fmt.Println("a — это срез байт:", v)
}
}
func main() {
do[bool](a)
do[bool](true)
do[int]([]int{1, 2, 3})
}
Как и с выражениями case
, если фактический тип a
совпадает с несколькими case
, выбирается первый подходящий.
👉 Go Playground
#tipGo Playground - The Go Programming Language
👍 8🔥 2❤ 1
1 076210
Photo unavailable
Приходи на митап True Tech Party от МТС
Провожаем лето в компании CTO, тимлидов и руководителей разработки из МТС и не только, которые поделятся опытом в управлении командами и поговорят, какие хард- и софтскилы развивать, чтобы продвигаться по карьере. Спикеры расскажут, с какими ожиданиями сталкиваются тимлиды, как и какие решения принимают CTO, как строится обучающая среда для инженеров.
Когда: 30 августа
Где: Офлайн (Москва, парк Музеон) + онлайн
Событие будет интересно разработчикам и начинающим руководителям в IT.
Регистрируйся по ссылке. Присоединяйся!
Реклама. Информация о рекламодателе
68340
Photo unavailable
The Algorithms - Go
Алгоритмы, реализованные на GoLang
Репозиторий представляет собой коллекцию имплементаций и демонстраций наиболее популярных алгоритмов, реализованных в Go.
https://github.com/TheAlgorithms/Go
@Golang_google
🔥 5❤ 2
1 166730
Repost from Golang
Photo unavailable
🎊 Выпущены версии Go 1.22.6 и 1.21.13!
🔈 Анонс: https://groups.google.com/g/golang-announce/c/X4q_-Wf-5g4
⬇️ Скачать: https://go.dev/dl/#go1.22.6
#golang
@Golang_google
🔥 1
1 22920
Photo unavailable
👩💻 Generic collection types на Go: недостающая документация
В Go 1.18 появились дженерики, но Zach Musgrave (разработчик в DoltHub) обнаружил, что практических примеров и документации по данной теме не хватает.
Он провел несколько экспериментов и поделился тем, что узнал после многих часов работы.
📍 гайд
👍 2🔥 2❤ 1
1 460300
اختر خطة مختلفة
تسمح خطتك الحالية بتحليلات لما لا يزيد عن 5 قنوات. للحصول على المزيد، يُرجى اختيار خطة مختلفة.