Anonymous Poll
28%
22%
67%
Что выведет данный код?
func main() {
items := []string{
"Кошка",
"Собака",
"Роза",
}
animals := items[0:2]
plants := items[2:3]
animals = append(animals, "Хомяк")
fmt.Printf("Животные: %v (len: %d, cap: %d)\n", animals, len(animals), cap(animals))
fmt.Printf("Растения: %v (len: %d, cap: %d)\n", plants, len(plants), cap(plants))
}✅Код выведет: Животные: [Кошка Собака Хомяк] (len: 3, cap: 3) Растения: [Хомяк] (len: 1, cap: 1)🤩
💬Давайте последовательно, как получились такие капасити и длина?
❕Тут важно вспомнить теорию ломтиков - когда мы отрезаем ломтик, его капасити высчитывается как капасити родительского слайса вычесть стартовый индекс ломтика. 📌Таким образом конечные cap(animals) = 3 - 0 = 3; cap(plants) = 3 - 2 = 1. С длинной все проще, сколько элементов по факту в ломтике, столько и длина➡️
🟢Почему хомяк закрался в растения?
💻Animals при достижении append хранит в себе [Кошка, Собака], при этом len=2, так как у нас два элемента, а cap = 3 (считаем как в предыдущем пункте). ВАЖНО❕у ломтиков такой же массив родитель что у items, получается если был items из трех элементов мы отрезали два, то по факту мы просто на том же блоке памяти добавили ссылок для новых ломтиков. То есть мы смотрим в animals и видим [Кошка, Собака], но в памяти все равно набор данных строк лежит как [Кошка, Собака, Роза], просто у ломтика конечный индекс другой. ➡️Поэтому когда мы добавляем в animals "Хомяк", капасити нам позволяет в тот же массив родитель добавить, так как длинна 2 < cap 3. ➡️Поэтому в тот же массив родитель мы и производим наши изменения, а так как индекс ломтика завершился на Собака, то когда происходит append мы инкрементим индекс и просто перезаписываем Роза на Хомяк в памяти🔘
💬Давайте последовательно, как получились такие капасити и длина?
❕Тут важно вспомнить теорию ломтиков - когда мы отрезаем ломтик, его капасити высчитывается как капасити родительского слайса вычесть стартовый индекс ломтика. 📌Таким образом конечные cap(animals) = 3 - 0 = 3; cap(plants) = 3 - 2 = 1. С длинной все проще, сколько элементов по факту в ломтике, столько и длина➡️
🟢Почему хомяк закрался в растения?
💻Animals при достижении append хранит в себе [Кошка, Собака], при этом len=2, так как у нас два элемента, а cap = 3 (считаем как в предыдущем пункте). ВАЖНО❕у ломтиков такой же массив родитель что у items, получается если был items из трех элементов мы отрезали два, то по факту мы просто на том же блоке памяти добавили ссылок для новых ломтиков. То есть мы смотрим в animals и видим [Кошка, Собака], но в памяти все равно набор данных строк лежит как [Кошка, Собака, Роза], просто у ломтика конечный индекс другой. ➡️Поэтому когда мы добавляем в animals "Хомяк", капасити нам позволяет в тот же массив родитель добавить, так как длинна 2 < cap 3. ➡️Поэтому в тот же массив родитель мы и производим наши изменения, а так как индекс ломтика завершился на Собака, то когда происходит append мы инкрементим индекс и просто перезаписываем Роза на Хомяк в памяти🔘
Что выведет данный код
func main() {
var ch chan int
select {
case ch <- 1:
fmt.Println("Успешно отправили в канал")
case <-time.After(1 * time.Second):
fmt.Println("Время вышло")
}
}Код выведет:
Anonymous Poll
48%
Панику, запись в нил канал
7%
Сработает случайный select-кейс
41%
Время вышло
5%
Успешно отправили в канал
Во втором кейсе мы получаем канал, в который через секунду получим ответ. Так как больше кейсов нет, один кейс false, а второй ждем, значит мы просто прождем секунду и выведем
Важно
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5 2
Всем привет❕
Сегодня наконец закончили создание для вас конспекта💻
В нем вы сможете найти:
🔘 Назначение и реализацию слоев написанного микросервиса
🟢 Подводные камни межслойного взаимодействия
🔘 Ответы на наиболее интересные и актуальные вопросы с созвона
🟢 Наставления из личного опыта разработки и менторства
🔘 Ссылку на гитхаб репо с кодом
Для приобретения конспекта за символическую цену, напишите мне🥳
🖥
Сегодня наконец закончили создание для вас конспекта
В нем вы сможете найти:
Для приобретения конспекта за символическую цену, напишите мне
Please open Telegram to view this post
VIEW IN TELEGRAM
1 4❤2👍1 1
Anonymous Poll
22%
1. Mock-тесты в микросервисе: покроем мок-тестами микросервис разобранный в конспекте выше🔘
19%
2. Новые мапы: разберем swiss table и другие нововведения мапы🔘
8%
3. Запуск сервиса в докере🔘
17%
4. Паттерны конкурентного программирования: поговорим о популярных паттернах (worker pool и другие)🔘
19%
5. Планировщик в го🔘
11%
6. Разбор моck-собеседования🔘
3%
7. Напишу тебе свой вариант 🔘
Всем привет⭕️
Хочу сказать огромное спасибо каждому за очень большую активность в покупке конспекта — ваша поддержка мотивирует меня делать еще больше полезных материалов❕
➡️ Когда мы с вами общались, многие спрашивали чем я занимаюсь. Так вот решил вкратце ответить: я работаю в сфере 👣 уже более 5 лет, на данный момент работаю в Самокате.
За это время я понял одно➡️ мне очень интересно учить и развивать людей в этой теме, ровно поэтому уже на протяжении 4-х лет помогаю начинающим устраиваться на работу и писать классный код. Последние полтора года занимаюсь менторством в Эйч Навыках, где тоже подготовил уже большое количество специалистов🔘
Хочу сказать огромное спасибо каждому за очень большую активность в покупке конспекта — ваша поддержка мотивирует меня делать еще больше полезных материалов
За это время я понял одно
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Go Level Up pinned «Всем привет⭕️ Хочу сказать огромное спасибо каждому за очень большую активность в покупке конспекта — ваша поддержка мотивирует меня делать еще больше полезных материалов❕ ➡️ Когда мы с вами общались, многие спрашивали чем я занимаюсь. Так вот решил вкратце…»
Please open Telegram to view this post
VIEW IN TELEGRAM
Что должно быть в разборе Mock-тестов 🧐
Anonymous Poll
64%
Разбор наиболее используемого решения в коммерции - генераторов моков ⚡️
27%
Самописная реализация моков с нуля ⚡️
32%
Наглядные примеры антипаттернов моков, которые встречаются 📛
45%
Теория по мокам, что это такое и зачем нужно, чем удобно в коммерции 👨💻
59%
Примеры для мока конкретных запросов БД или http, используя готовые либы📔
‼️ Что выведет данный код? Для тех кто не знаком с 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 сделает это за вас
На самом деле данный код просто дает ответ на вопрос: "А что такое строка в Го?"
Начнем тогда с ответа на данный вопрос: строка в Go - тип данных, состоящий из указателя на последовательность байтов и длины этой последовательности. Более грубая и простая формулировка: ‼️ Строка в Go - набор байтов! Зная это, мы теперь спокойно можем сказать, почему первый цикл выдал нам "Это байт"
А почему второй цикл выдал, что это руна
Please open Telegram to view this post
VIEW IN TELEGRAM
Коллеги, всем привет 👋
Многие спрашивают в личных чатах веду ли я индивидуальные занятия менторства, поэтому решил написать общий пост💬
🧑🎓 Конечно, веду, если у кого-то есть сложности в написании кода, освоении новой технологии или вы понимаете, что какая-то теория вам не поддается, смело пишите! Обсудим с вами как это можно решить, и что-нибудь обязательно придумаем!
Многие спрашивают в личных чатах веду ли я индивидуальные занятия менторства, поэтому решил написать общий пост
Please open Telegram to view this post
VIEW IN TELEGRAM
1 3❤2😁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-рекрутер.
Что ты найдешь в этом канале:
Подписывайся
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
СТАЖИРОВКИ в IT и Digital | Как найти первую работу
● Вакансии и стажировки в IT и Digital;
● Тут ты узнаешь как найти работу в IT;
● Хочешь проф. резюме от IT-рекрутера? Напиши сюда @geliyaereshova;
● Тут ты узнаешь как найти работу в IT;
● Хочешь проф. резюме от IT-рекрутера? Напиши сюда @geliyaereshova;