🐹 Go-задача (Go 1.22+): почему вывод вас удивит?
❓ Что напечатает программа?
• a)
• b)
• c)
• d)
package main
import "fmt"
func main() {
words := []string{"go", "rust", "zig"}
ptrs := []*string{}
for i, v := range words {
if i == 1 {
words = append(words, "odin") // добавляем элемент во время range
}
ptrs = append(ptrs, &v) // сохраняем адрес переменной v
}
for _, p := range ptrs {
fmt.Println(*p)
}
}
❓ Что напечатает программа?
• a)
go rust zig  • b)
go rust zig odin  • c)
zig zig zig zig  • d)
go rust zig odin, затем паника👍5❤4🔥4😁1
  Anonymous Quiz
    11%
    Создаёт новый HTTP хендлер
      
    75%
    Создаёт целочисленную переменную и публикует её
      
    10%
    Обнуляет счётчик переменной
      
    3%
    Удаляет переменную
      
    👎5👍1
  Anonymous Quiz
    47%
    float64
      
    5%
    float32
      
    12%
    int64
      
    5%
    Ни один вышеперечисленный
      
    30%
    Любые
      
    😁4👎3👍1
  Anonymous Quiz
    27%
    Программа обязательно будет полностью статической
      
    56%
    Программа может зависеть от системных динамических библиотек
      
    12%
    Программа не сможет использовать сторонние библиотеки
      
    5%
    Программа будет работать только под Windows
      
    ❤4
  Anonymous Quiz
    71%
    Когда нужны только ключи
      
    6%
    Для хранения значений
      
    10%
    Пустые структуры нельзя использовать в map
      
    13%
    Для оптимизации чтения
      
    Anonymous Quiz
    40%
    Mediator
      
    29%
    Observer
      
    20%
    Decorator
      
    8%
    Builder
      
    4%
    Proglibator
      
    👎6
  💡 Go-хак дня:  
Ключевое слово
Вот что с ним можно:
🔹 Создавать собственные типы на основе
🔹 Давать удобные псевдонимы стандартным типам
🔹 Прикреплять методы к любому типу — даже к обычному
Это позволяет писать чистый, читаемый и расширяемый код.
Управляй логикой через свои типы — и код начнёт работать на тебя 💪
#GoLang #GoTips #LearnGo
@golangtests
Ключевое слово
type в Go — это мощный инструмент, а не просто способ объявить struct.Вот что с ним можно:
🔹 Создавать собственные типы на основе
int, string, map и т.д.  🔹 Давать удобные псевдонимы стандартным типам
🔹 Прикреплять методы к любому типу — даже к обычному
int  Это позволяет писать чистый, читаемый и расширяемый код.
Управляй логикой через свои типы — и код начнёт работать на тебя 💪
#GoLang #GoTips #LearnGo
@golangtests
❤7👍3🔥3
  🧠 Quiz для Go-разработчиков: скомпилируется ли этот код?
Вопрос: оба switch скомпилируются?
Подумай, а потом напиши ответ в комментариях (Версия go 1.18) 👇
@golangtests
type T int
var n T = 1
func foo() {
switch 1 {
case n:
}
}
func bar() {
switch n {
case 1:
}
}
Вопрос: оба switch скомпилируются?
Подумай, а потом напиши ответ в комментариях (Версия go 1.18) 👇
@golangtests
👍2
  💡 Вместо отправки сигнала в канал, подумай о 
Оба варианта:
✅ Работают, даже если никто не читает из канала
✅ Позволяют нескольким горутинам реагировать на завершение
Такой подход делает код чище и избегает утечек.
#golang #concurrency
close() или sync.WaitGroup для завершения горутины.Оба варианта:
✅ Работают, даже если никто не читает из канала
✅ Позволяют нескольким горутинам реагировать на завершение
Такой подход делает код чище и избегает утечек.
#golang #concurrency
👍10🔥1
  Anonymous Quiz
    61%
    Ошибка компиляции
      
    12%
    Присвоение произойдёт без ошибок
      
    21%
    Значение будет скопировано в указатель
      
    6%
    Программа выйдет с ошибкой во время выполнения
      
    👎6👍2❤1
  ✅ В Go можно запускать тесты без единой внешней библиотеки — всё встроено из коробки!  
Вот как протестировать код в 3 шага:
1️⃣ Создай файл с суффиксом
2️⃣ Импортируй пакет
3️⃣ Запусти тесты командой:
Никаких зависимостей. Никаких настроек. Просто пиши код и проверяй его сразу.
#golang #testing #unittest
Вот как протестировать код в 3 шага:
1️⃣ Создай файл с суффиксом
_test.go — например, sum_test.go  2️⃣ Импортируй пакет
testing и напиши функцию вида: TestXxx(t *testing.T)  3️⃣ Запусти тесты командой:
go testНикаких зависимостей. Никаких настроек. Просто пиши код и проверяй его сразу.
#golang #testing #unittest
🤯11❤4👍4😁4🔥1
  😁21👎2❤1
  
package main
import (
"fmt"
)
func tricky() (err error) {
defer func() {
fmt.Println("D1:", err) // состояние именованного результата до recover
if r := recover(); r != nil {
err = fmt.Errorf("recovered: %v", r)
}
fmt.Println("D2:", err) // состояние после recover
}()
defer func() {
panic(2) // паника №2 во время размотки стека
}()
panic(1) // паника №1
}
func main() {
fmt.Println("start")
fmt.Println("ret:", tricky())
fmt.Println("end")
}
Вопросы:
@golangtests
Please open Telegram to view this post
    VIEW IN TELEGRAM
  ❤3🔥3👍1
  😁21👎15🤬8👏5🤯3👍2
  Forwarded from Golang
- Release notes: https://go.dev/doc/go1.25
- Скачать: https://go.dev/dl/#go1.25.0
Здесь можно посмотреть интерактивную версию релиза с множеством примеров, показывающих, новые фичи и посмотоеть как они работают
@golang_google
Please open Telegram to view this post
    VIEW IN TELEGRAM
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍6❤2🔥1🥰1
  😁5🤔1