Примитивы синхронизации — инструменты (в основном из пакета
sync
), которые обеспечивают •
sync.Mutex
— базовый механизм •
sync.RWMutex
— вариант Одновременно могут
Запись возможна
•
sync.WaitGroup
— позволяет •
sync.Once
— гарантирует •
sync.Cond
— условная переменная, при помощи которой Go предлагает два подхода к синхронизации — через
sync
и через Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🚀 Главная ошибка новичка в ML — строить звездолёт вместо велосипеда
Многие сразу хотят свою Midjourney, но в итоге получают только выгорание.
Успех начинается с «велосипеда»: научитесь предсказывать цены или классифицировать отзывы. Освойте базу, а уже потом стройте «звездолёты».
Наш курс «ML для старта в Data Science» — это и есть тот самый правильный старт от простого к сложному.
👉 Начните правильно
Берёте курс «ML для старта» до конца недели — Python в подарок.
❗А 21 августа пройдет бесплатный вебинар с Марией Жаровой: узнаете, какие проекты качают скилл, а какие качают ваши нервы.
А какой самый сложный проект вы брались делать в самом начале? 🫢
Многие сразу хотят свою Midjourney, но в итоге получают только выгорание.
Успех начинается с «велосипеда»: научитесь предсказывать цены или классифицировать отзывы. Освойте базу, а уже потом стройте «звездолёты».
Наш курс «ML для старта в Data Science» — это и есть тот самый правильный старт от простого к сложному.
👉 Начните правильно
Берёте курс «ML для старта» до конца недели — Python в подарок.
❗А 21 августа пройдет бесплатный вебинар с Марией Жаровой: узнаете, какие проекты качают скилл, а какие качают ваши нервы.
А какой самый сложный проект вы брались делать в самом начале? 🫢
❤1
Пример
func main() {
c := make(chan bool)
m := make(map[string]string)
go func() {
m["1"] = "a" // Первый конфликтный доступ
c <- true
}()
m["2"] = "b" // Второй конфликтный доступ
<-c
for k, v := range m {
fmt.Println(k, v)
}
}
-race
$ go test -race mypkg
$ go run -race mysrc.go
$ go build -race mycmd
$ go install -race mypkg
GORACE
позволяет $ GORACE="log_path=/tmp/race/report Strip_path_prefix=/my/go/sources/" go test -race
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
🔎 Ищете способы улучшить работу с данными в Go?
На открытом вебинаре разберемся, как использовать итераторы для работы с большими данными. Поймем, что изменилось с Go 1.23 и какие преимущества дают ленивые итераторы.
❗️ Изучите, как заменить стандартные циклы на более эффективные итераторы и оптимизировать свой код. Освойте лучшие практики разработки на Go!
Присоединяйтесь к открытому уроку 19 августа в 20:00 МСК: https://clc.to/M-aU0Q
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
На открытом вебинаре разберемся, как использовать итераторы для работы с большими данными. Поймем, что изменилось с Go 1.23 и какие преимущества дают ленивые итераторы.
❗️ Изучите, как заменить стандартные циклы на более эффективные итераторы и оптимизировать свой код. Освойте лучшие практики разработки на Go!
Присоединяйтесь к открытому уроку 19 августа в 20:00 МСК: https://clc.to/M-aU0Q
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍1🥱1
Пустой идентификатор
_
в Go используется как value, _ := someFunction()
range
: при переборе for k, _ := range myMap {
fmt.Println(k)
}
for _, v := range mySlice {
fmt.Println(v)
}
import _ "image/png"
_, y := getCoordinates()
result, _ := strconv.Atoi("123")
person := struct {
Name string
_ int
}{"Alice", 30}
Please open Telegram to view this post
VIEW IN TELEGRAM