Anonymous Quiz
40%
Mediator
30%
Observer
20%
Decorator
7%
Builder
3%
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
Forwarded from Golang вопросы собеседований
🔎 Задача на Go с подвохом
Код:
Вопрос: Что выведет этот код?
Варианты ответа:
A.
B.
C.
D.
Правильный ответ:B
Объяснение:
1. Создается срез с длиной 3 и capacity 4, заполненный значениями [1, 2, 3]
2. При передаче в функцию modifySlice:
— append добавляет элемент 4, но не вызывает переаллокацию
— Изменение s[0] = 100 применяется к тому же underlying массиву
3. Однако исходный срез в main() останется длины 3, но первый элемент изменится:
— Длина среза в main не меняется
— Но изменения элементов видны, так как используется тот же массив
@golang_interview
Код:
package main
import "fmt"
func main() {
s := make([]int, 3, 4) // Длина 3, capacity 4
s[0], s[1], s[2] = 1, 2, 3
modifySlice(s)
fmt.Println(s)
}
func modifySlice(s []int) {
s = append(s, 4)
s[0] = 100
}
Вопрос: Что выведет этот код?
Варианты ответа:
A.
[1 2 3]
B.
[100 2 3]
C.
[1 2 3 4]
D.
[100 2 3 4]
Правильный ответ:
Объяснение:
1. Создается срез с длиной 3 и capacity 4, заполненный значениями [1, 2, 3]
2. При передаче в функцию modifySlice:
— append добавляет элемент 4, но не вызывает переаллокацию
— Изменение s[0] = 100 применяется к тому же underlying массиву
3. Однако исходный срез в main() останется длины 3, но первый элемент изменится:
— Длина среза в main не меняется
— Но изменения элементов видны, так как используется тот же массив
@golang_interview
👍10❤3
Anonymous Quiz
47%
false false false false
20%
true true false false
9%
false false true true
24%
true true true true
👍5❤2