Golang Юниор
4.87K subscribers
199 photos
6 videos
237 links
Канал для начинающих изучать язык программирования Go. Юниоры или Junior - Вперед.

Контент нашего канала состоит из:
- туториалы
- вопросы с собесов
- тесты на знания Go


@viktorreh
@anothertechrock

Чат: https://t.me/+UA9kQbQdpFxmZGY6
Download Telegram
Go Optimizations 101

Автор:
Tapir Liu
Год издания: 2022

#go #en

Скачать книгу
Что выведет код?

package main

import "fmt"

func main() {
for t := 0; t < 10; t++ {
for i := 0; i < 10; i++ {
fmt.Print("*")
}
fmt.Println()
}
}

Ответ
🤯16💩4🔥1🖕1
The Ultimate Guide
To Building Database
Driven Apps with Go

Автор:
Baron Schwartz
Год издания: 2019

#go #en

Скачать книгу
👍1
Что выведет код ?

package main

import "fmt"

func foo(a []int) {
a = append(a, 7)
a[1] = 7
}

func bar(a *[]int) {
*a = append(*a, 7)
}

func main() {
a := []int{1, 2, 3, 4, 5, 6}
fmt.Printf("a[1]=%d\n", a[1])

b := a[1:3]
b[0] = 10
fmt.Printf("1. a[1]=%d\n", a[1]) // что выведет?

b = append(b, a...)
b[0] = 100
fmt.Printf("2. a[1]=%d\n", a[1]) // что выведет?

foo(a)
fmt.Printf("3. a[1]=%d\n", a[1]) // что выведет?

bar(&a)
fmt.Printf("4. a=%v\n", a) // что выведет?
}


Ответ
How To Code in Go

Автор:
Mark Bates, Cory LaNou, Tim Raymond
Год издания: 2020

#go #en

Скачать книгу
👍1
Что выведет код?

package main

import (
"errors"
"fmt"
)

var ErrNotFound = errors.New("Resource was not found")

func main() {
err := raise()
if err == ErrNotFound {
fmt.Println("impossible")
return
}
if err != nil {
fmt.Println("unexpected error")
return
}
}

func raise() error {
return ErrNotFound
}

Ответ
🥱3👍1👎1
Learning Go Programming

Автор:
Vladimir Vivien
Год издания: 2016

#go #en

Скачать книгу
Что выведет код ?

package main

import "fmt"

func main() {
animals := []string{"bear", "bear", "rabbit", "wolf"}

for _, animal := range animals {
switch animal {

case "rabbit":
fmt.Println(animal, "is so weak!")
fallthrough

case "bear", "wolf":
fmt.Println(animal, "is so strong!")
}
}
}

Ответ
Introducing Go

Автор:
Caleb Doxsey
Год издания: 2016

#go #en

Скачать книгу
👍1
Что выведет код?

package main

func f(n int) (r int) {
defer func() {
r += n
recover()
}()

var f func()
defer f()
f = func() {
r += 2
}

return n + 1
}

func main() {
println(f(3))
}

Ответ
🤯5
An Introduction to Go

Автор:
Caleb Doxsey
Год издания: 2012

#go #english

Скачать книгу
1👍1
Network Programming with Go

Автор:
Adam Woodbeck
Год издания: 2021

#go #en

Скачать книгу
👣 go-tunnel

Утилита на Golang для безопасного открытия портов HTTP/Websocket

▪️ Github
Generic Data Structures and
Algorithms in Go

Автор:
Richard Wiener
Год издания: 2022

#go #en

Скачать книгу
🔴 Dot: элегантное решение для манипуляции данными в Golang

Мы разработали удивительный новый пакет для Golang на GitHub, который позволяет легко вносить изменения в структуры с использованием пути к полям, разделенных точками: Field1.Field2.Field3.

➡️ Идея возникла, когда нам понадобилось обновить данные во множестве структур для последующей передачи в API. Мы знали точные пути ко всем полям, но не хотели делать это вручную. Именно тогда родился Dot!

Если вы поддерживаете open-source, мы будем благодарны за вашу ⭐️ нашему репозиторию на GitHub. Вместе мы делаем разработку в Go еще лучше!

🌍 Github: https://github.com/mowshon/dot (очень подробная документация - на английском) 🇬🇧

📚 Статья на русском языке: https://golangify.com/dot
👍8💩4
Вопрос с собеседования. Как устроен слайс и чем он отличается от массива?

Ответ через пару часов завтра.

#собеседование
Ответ на «Как устроен слайс и чем он отличается от массива?»

Срезы (slice) в отличие от массивов могут менять свою длину. То есть можно добавлять новые элементы, или удалять уже существующие.

Также в Go имеется оператор среза : , который позволяет создавать новый срез и содержит указанную последовательность от и до:

// исходный массив
initialUsers := [8]string{"Bob", "Alice", "Kate", "Sam", "Tom",
"Paul", "Mike", "Robert"}
users1 := initialUsers[2:6] // с 3-го по 6-й
users2 := initialUsers[:4] // с 1-го по 4-й
users3 := initialUsers[3:] // с 4-го до конца

fmt.Println(users1) //["Kate", "Sam", "Tom", "Paul"]
fmt.Println(users2) //["Bob", "Alice", "Kate", "Sam"]
fmt.Println(users3) //["Sam", "Tom", "Paul", "Mike", "Robert"]
👍3🥰2💩2🤡1
Каким будет результат?
Anonymous Quiz
31%
A
41%
65
28%
Ошибка компиляции
😱11👍2
Пакет context в Go: взгляд профессионала

Пакет context появился как x/net/context в 2014 году и быстро обрел популярность. В 2016 году его добавили в стандартную библиотеку Go 1.7. С тех пор практически ни одно приложение на Go не обходится без его использования, потому что пакет ощутимо упрощает многие задачи.

💎 Чат: ссылка

🌍 Статья: https://habr.com/ru/companies/pt/articles/764850/
👍7😁1
🧰 Как устроены мапы под капотом: гайд для Go-разработчика

Павел Комаров из AvitoTech в подробностях рассмотрел процесс записи и чтения данных в мапы, важность передачи количества элементов при создании мапы, а также уделил внимание проблеме переполнения и эвакуации элементов, даже до уровня отдельных битов.

👉 Читать
👍73🔥1👏1