Go Level Up
268 subscribers
3 photos
5 links
Go Hard or Go Home

Контакт для связи со мной: @sQUARyss
Download Telegram
Код выведет: Время вышло

💻Почему не паника, ведь у нас nil-канал и запись в него?!
💬Тут все просто, select пропускает данные операции с nil-каналами, если они невозможны. Получается это просто кейс, который никогда не сработает.

Почему Время вышло?
Во втором кейсе мы получаем канал, в который через секунду получим ответ. Так как больше кейсов нет, один кейс false, а второй ждем, значит мы просто прождем секунду и выведем
Время вышло

Важно
Помните, что если в select-кейсах есть несколько true-кейсов, то из них будет выбран один случайным образом💻
Please open Telegram to view this post
VIEW IN TELEGRAM
52
Всем привет

Сегодня наконец закончили создание для вас конспекта💻

В нем вы сможете найти:
🔘Назначение и реализацию слоев написанного микросервиса
🟢Подводные камни межслойного взаимодействия
🔘Ответы на наиболее интересные и актуальные вопросы с созвона
🟢Наставления из личного опыта разработки и менторства
🔘Ссылку на гитхаб репо с кодом

Для приобретения конспекта за символическую цену, напишите мне 🥳

🖥
Please open Telegram to view this post
VIEW IN TELEGRAM
142👍11
Всем привет⭕️

Хочу сказать огромное спасибо каждому за очень большую активность в покупке конспекта — ваша поддержка мотивирует меня делать еще больше полезных материалов

➡️Когда мы с вами общались, многие спрашивали чем я занимаюсь. Так вот решил вкратце ответить: я работаю в сфере 👣 уже более 5 лет, на данный момент работаю в Самокате.

За это время я понял одно➡️мне очень интересно учить и развивать людей в этой теме, ровно поэтому уже на протяжении 4-х лет помогаю начинающим устраиваться на работу и писать классный код. Последние полтора года занимаюсь менторством в Эйч Навыках, где тоже подготовил уже большое количество специалистов🔘
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Go Level Up pinned «Всем привет⭕️ Хочу сказать огромное спасибо каждому за очень большую активность в покупке конспекта — ваша поддержка мотивирует меня делать еще больше полезных материалов ➡️Когда мы с вами общались, многие спрашивали чем я занимаюсь. Так вот решил вкратце…»
💻 Итак, голосование показало, что наиболее интересными темами для разбора являются Mock-тесты и новые мапы.

🧑‍💻 Для начала я решил взять Mock-тесты, начал реализовывать всё на готовых генераторах моков (так как в коммерции они чаще используются) и понял, что стоило сначала узнать вашего мнения 👍 Что вам было бы удобнее/понятнее? ⁉️

📊 Собственно поэтому создаю опрос ниже если у вас есть свои пожелания к конспекту, пишите в личку - обязательно учту при разработке конспекта

📌 Также напоминаю о том, что конспект по написанию микросервиса с нуля уже в продаже, чтобы приобрести напишите мне
Please open Telegram to view this post
VIEW IN TELEGRAM
‼️ Что выведет данный код? Для тех кто не знаком с reflect'ом оставил комменты 💬
func checkType(value interface{}) string {
// в кейсе получаем тип value и сравниваем его
//со стандартными с помощью пакета reflect
switch t := reflect.TypeOf(value); t.Kind() {
case reflect.String:
return "Это строка"
case reflect.Uint8:
return "Это байт (uint8)"
case reflect.Int32: // rune - это псевдоним для int32
return "Это руна (int32)"
}

return ""
}

func main() {
s := "Go Level Up"

for i := 0; i < len(s); i++ {
fmt.Println(checkType(s[i]))

break
}

for _, v := range s {
fmt.Println(checkType(v))

break
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Код выведет: Это байт (uint8) Это руна (int32)

На самом деле данный код просто дает ответ на вопрос: "А что такое строка в Го?"
🧐

Начнем тогда с ответа на данный вопрос: строка в Go - тип данных, состоящий из указателя на последовательность байтов и длины этой последовательности. Более грубая и простая формулировка: ‼️ Строка в Go - набор байтов! Зная это, мы теперь спокойно можем сказать, почему первый цикл выдал нам "Это байт"

А почему второй цикл выдал, что это руна
⁉️ Он же по сути также итерируется, НО нет, for range в Go в целом достаточно могущественная вещь и с ним надо быть внимательным. В данном случае for range итерируется не по каждому байту, а по каждому символу. Зачем? Дело в том, что в один байт невозможно впихнуть всё, что может быть в строке ☹️ По сути в него вмещается только набор символов кодировки UTF-8 (если вкратце: английский язык, числа и ряд символов). А что делать с русским, китайским, эмодзи?! Собственно для этого и придуманы руны - алиас над типом int32. Они позволяют хранить в одной ячейке не один байт, а сразу четыре, и рассматривать строку не как набор байт, а как набор рун (символов) 🎆 Поэтому чтобы итерироваться по строке посимвольно вам надо либо ее приводить к набору рун, либо for range сделает это за вас
Please open Telegram to view this post
VIEW IN TELEGRAM
21👍11
Коллеги, всем привет 👋

Многие спрашивают в личных чатах веду ли я индивидуальные занятия менторства, поэтому решил написать общий пост 💬

🧑‍🎓 Конечно, веду, если у кого-то есть сложности в написании кода, освоении новой технологии или вы понимаете, что какая-то теория вам не поддается, смело пишите! Обсудим с вами как это можно решить, и что-нибудь обязательно придумаем!
Please open Telegram to view this post
VIEW IN TELEGRAM
132😁1
‼️ Что выведет данный код?
func printlnStrings(allStrings ...string) {
for _, s := range allStrings {
for i := 0; i < len(s); i++ {
fmt.Print(string(s[i]))
}

fmt.Println(fmt.Sprintf(" %d", len(s)))
}
}

func main() {
eng := "Go Level Up"
rus := "Го левел ап"

printlnStrings(eng, rus)
}
Всем привет⚡️ Читая ваши фидбэки понял, что в канале аудитория абсолютно разная. Поэтому решил создать мини-опрос📊 чтобы в дальнейшем контент был максимально полезным и понятным для всех👨‍💻
Anonymous Poll
15%
Вкатывающийся - ничего не знаю о Go, но очень хочу узнать
11%
Начинающий - начал изучение Go и Backend
23%
Стажер - знаю базу разработки на Go, но нет опыта
17%
Junior - имею небольшой опыт работы в сфере Backend
34%
Middle/Senior - уверенно пишу, есть опыт работы в разных компаниях
👋Привет всем от автора канала СТАЖИРОВКИ в IT и Digital | Как найти первую работу

Меня зовут Гелия – я опытный IT-рекрутер.

Что ты найдешь в этом канале:
🌸 Свежие вакансии для начинающих и стажировки в IT и Digital;
🌸 Секреты и фишки как быстрее найти работу в IT (даже если ты новичок);
🌸 Советы как правильно составить резюме, чтобы тебя пригласили на собес;
🌸 Сплетни и слухи о компаниях в рубрике "Всратые работодатели".


Подписывайся СТАЖИРОВКИ в IT и Digital | Как найти первую работу
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет! Конспект по Mock-тестам готов🎆

В нем вы встретите:
🔘Разбор теории по мокам с практическими примерами
🔘Ответ на вопрос: "Зачем нужны моки?"
🔘Реализацию Mock-теста с помощью библиотеки gomock на примере микросервиса, написанного в предыдущем конспекте, с объяснениями каждого поля
🔘Разбор частых ошибок и объяснения как их избегать

❗️Также, напоминаю, что помимо конспекта по Mock-тестам, есть возможность приобрести конспект по написанию первого микросервиса с нуля.

Оба конспекта можно приобрести, написав мне: @sQUARyss
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁1
Go Level Up
‼️ Что выведет данный код? func printlnStrings(allStrings ...string) { for _, s := range allStrings { for i := 0; i < len(s); i++ { fmt.Print(string(s[i])) } fmt.Println(fmt.Sprintf(" %d", len(s))) } } func main() { eng := "Go Level…
Код выведет: Go Level Up 11 Ро левел ап 20

🧑‍🎓 Начнем с ответа на вопрос: "Почему не вывелось Го левел ап" - если мы вспомним теорию строк, то обратим внимание что грубо говоря строка это набор байтов. Логично, что в один байт впихнуть еще и русский язык не получится, там и так уже английские символы, цифры и базовые символы. Соответственно для кодировки русского языка нужно 2 байта‼️. НО! Так как мы итерируемся по строке поиндексно, то мы получаем каждый байт строки и в случае русского языка, где для каждого символа два байта, мы берем и выводим каждый байт отдельно. Ровно поэтому выводится не то, что мы ожидаем👍

🔜 Теперь благодаря тому, что мы знаем, что символы русского языка хранятся в двух байтах, мы можем понять почему длина в два раза больше. Важно! В два раза больше весит каждый символ, не пробелы. Поэтому у нас не 11 и 22, а 11 и 20, потому что 9 символов + 2 пробела
Please open Telegram to view this post
VIEW IN TELEGRAM
41
Привет, коллеги! 👋

Собрал для вас вопросы для мок-интервью по Go – можно потренироваться перед реальными собеседованиями.

Зачем это нужно?

🟢 Определим ваш уровень – в каждой теме поймем на какой уровень у вас знания.
🟢 Найдём слабые места – например, выяснится, что с каналами всё ок, а вот с интерфейсами – не очень.
🟢 Разберём ошибки – не только технические, но и как подаёте себя (да, софт-скиллы очень важны).
🟢 Получите конкретный фидбэк – после созвона скажу, куда копать и что подтянуть.

Если хотите "протестировать" себя – пишите, назначим время. Будет полезно 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
1221
Что выведет код?
func main() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered:", r)
}
}()

defer fmt.Println("1")
defer fmt.Println("2")

panic("something went wrong")
}