Anonymous Quiz
28%
byte
61%
rune
6%
int
5%
string
❓ Что не так с этим кодом на Go? И чего вы ожидаете на выходе?
На первый взгляд - всё понятно. Но на самом деле это ловушка 😏
Вы переопределяете iota как обычную константу, равную самой себе (iota = iota). С этого момента iota перестаёт быть магической переменной, и счётчик сбрасывается.
Поэтому Y получает значение 0, а не 1 — как многие ожидают.
Вывод программы: 0
💡 Мораль: никогда не переназначайте iota внутри const, иначе потеряете её «магию».
Запустить код: https://go.dev/play/p/7xu1qRUcp2O
package main
func main() {
const (
iota = iota
Y
)
println(Y)
}
На первый взгляд - всё понятно. Но на самом деле это ловушка 😏
Вы переопределяете iota как обычную константу, равную самой себе (iota = iota). С этого момента iota перестаёт быть магической переменной, и счётчик сбрасывается.
Поэтому Y получает значение 0, а не 1 — как многие ожидают.
Вывод программы: 0
💡 Мораль: никогда не переназначайте iota внутри const, иначе потеряете её «магию».
Запустить код: https://go.dev/play/p/7xu1qRUcp2O
👍6❤1🔥1😢1
package main
import (
"encoding/json"
"fmt"
"reflect"
)
type S struct {
A []int `json:"a"`
B []int `json:"b"`
}
func main() {
var a []int // nil
b := []int{} // пустой
fmt.Println(a == nil, len(a), cap(a)) // ?
fmt.Println(b == nil, len(b), cap(b)) // ?
fmt.Println(reflect.DeepEqual(a, b)) // ?
x := S{A: a, B: b}
d, _ := json.Marshal(x)
fmt.Println(string(d))
}
Ответ:
false 0 0
false
{"a":null,"b":[]}
👉 Запустить код: https://go.dev/play/p/PaqGcSwGqpV
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4❤3
Anonymous Quiz
10%
false false false
2%
false false true
24%
false true true
7%
true false true
57%
true true true
Интенсив по очередям: Kafka & NATS
Асинхронное взаимодействие и очереди — невероятно широкая тема, и абсолютно обязательная к изучению всем, кто интересуется архитектурой. Разработчику важно понимать архитектурные особенности, сильные и слабые стороны компонент, на базе которых строится архитектура.
🌐 В программе курса:
▪️Асинхронное взаимодействие с помощью очередей: подходы, свойства, гарантии
▪️Какие бывают очереди, основные системы очередей, на какие свойства и требования смотреть при выборе
▪️Как конфигурировать и управлять системами очередей
▪️Архитектура Apache Kafka, streams, topics, конфигурации от минимального single instance до production grade кластера с отказоустойчивостью
▪️Архитектуры NATS, pub/sub, req/res, streaming, кластер, суперкластер, федерация, edge.
Всё в формате «живых» онлайн-сессий (лекции, брейнштормы, демо).
🥸 Кто мы: R&D-центр Devhands.io, наш канал. Автор курса — Владимир Перепелица, эксперт по большим проектам, очередям и Tarantool, Solution Architect в Exness, создатель S3 в VK Cloud, регулярный спикер и член ПК конференций Highload.
🗓 Старт курса 11 ноября. Изучить программу и записаться можно здесь.
Ждём вас!
Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2Vtzqwff6PR
Асинхронное взаимодействие и очереди — невероятно широкая тема, и абсолютно обязательная к изучению всем, кто интересуется архитектурой. Разработчику важно понимать архитектурные особенности, сильные и слабые стороны компонент, на базе которых строится архитектура.
▪️Асинхронное взаимодействие с помощью очередей: подходы, свойства, гарантии
▪️Какие бывают очереди, основные системы очередей, на какие свойства и требования смотреть при выборе
▪️Как конфигурировать и управлять системами очередей
▪️Архитектура Apache Kafka, streams, topics, конфигурации от минимального single instance до production grade кластера с отказоустойчивостью
▪️Архитектуры NATS, pub/sub, req/res, streaming, кластер, суперкластер, федерация, edge.
Всё в формате «живых» онлайн-сессий (лекции, брейнштормы, демо).
Ждём вас!
Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2Vtzqwff6PR
Please open Telegram to view this post
VIEW IN TELEGRAM
Anonymous Quiz
39%
go run -race
7%
go build -race
25%
go test -race
29%
Все варианты верны
This media is not supported in your browser
VIEW IN TELEGRAM
Если присвоить интерфейсу значение nil конкретного типа, сравнение с nil вернёт false, потому что у интерфейса уже есть динамический тип. Запомни правило: интерфейс равен nil только когда и тип отсутствует, и значение nil.
package main
import (
"fmt"
"os"
)
func main() {
var err error = (*os.PathError)(nil)
fmt.Println(err == nil)
}
https://www.youtube.com/shorts/vobogCxfoLk
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤯4❤2
😱 Хаос из REST, gRPC и Swagger в проекте? Пора навести порядок. На открытом уроке от OTUS вы узнаете, как построить микросервисную архитектуру, где всё работает согласованно — на основе единой схемы proto3.
👨💻 Эксперт покажет, как из одной proto-схемы автоматически генерировать gRPC, API-Gateway и Swagger — без ручных правок и бесконечных конфликтов версий. Вы разберётесь, как правильно структурировать проект, настраивать protoc и плагины, подключать HTTP-аннотации и создавать понятную документацию.
❗️ После урока вы сможете собрать рабочий шаблон микросервиса на Go, где gRPC обслуживает внутренние вызовы, REST — внешние, а Swagger — интеграцию и тестирование. Всё из одной схемы.
📅 12 ноября в 20:00 МСК. Открытый вебинар проходит в преддверии старта курса «Микросервисы на Go». Регистрируйтесь и узнайте, как превратить сложную архитектуру в управляемую систему: https://otus.pw/UDk1/?erid=2W5zFJsionp
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
👨💻 Эксперт покажет, как из одной proto-схемы автоматически генерировать gRPC, API-Gateway и Swagger — без ручных правок и бесконечных конфликтов версий. Вы разберётесь, как правильно структурировать проект, настраивать protoc и плагины, подключать HTTP-аннотации и создавать понятную документацию.
❗️ После урока вы сможете собрать рабочий шаблон микросервиса на Go, где gRPC обслуживает внутренние вызовы, REST — внешние, а Swagger — интеграцию и тестирование. Всё из одной схемы.
📅 12 ноября в 20:00 МСК. Открытый вебинар проходит в преддверии старта курса «Микросервисы на Go». Регистрируйтесь и узнайте, как превратить сложную архитектуру в управляемую систему: https://otus.pw/UDk1/?erid=2W5zFJsionp
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
❤2
👍1