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

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


@viktorreh
@anothertechrock

Чат: https://t.me/+UA9kQbQdpFxmZGY6
Download Telegram
Ответ на «Переверните порядок элементов в срезе.»

package main
import "fmt"
func reverse(sw []int) {
for a, b := 0, len(sw)-1; a < b; a, b = a+1, b-1 {
sw[a], sw[b] = sw[b], sw[a]
}
}
func main() {
x := []int{3, 2, 1}
reverse(x)
fmt.Println(x)
}

Цикл for меняет местами значения каждого элемента среза. Значения будут следовать слева направо, и в итоге все элементы будут развернуты.

#задача
👍6
Чат-бот под несколько месенджеров

💎 Чат
: @golang_talks

Привет, я Паша, руковожу эксплуатацией инфраструктуры крупного хайлоад-проекта. Хочу поделиться опытом разработки бота на Golang для различных мессенджеров.

Читать далее
👍3
Вопрос с собеседования. Расскажите об интерфейсах в Go. Чем они являются и как работают?

Ответ завтра.

#собеседование
👍13🔥3
Ответ на «Расскажите об интерфейсах в Go. Чем они являются и как работают?»

Интерфейсы — это особый тип в Go, который определяет набор сигнатур методов, но не представляет реализации. Значения типа interface могут содержать любое значение, реализующее эти методы.

Интерфейсы, по сути, действуют как плейсхолдеры для методов, которые будут иметь несколько реализаций в зависимости от того, какой объект их использует.

Например, можно реализовать интерфейс geometry, который будет утверждать, что все фигуры, использующие этот интерфейс, должны реализовывать area() и perim().

type geometry interface {
area() float64
perim() float64
}

#собеседование
👎9🔥3👍1
Какой будет результат выполнения кода?
Anonymous Quiz
16%
0.0
29%
Ошибка компиляции
56%
%
😁15👍4
Какой будет результат выполнения кода?
Anonymous Quiz
34%
18
46%
5
19%
Ошибка компиляции
🔥3🤮2👏1
👍7
👍2
Какой будет результат выполнения кода?
Anonymous Quiz
22%
3
45%
4
33%
Ошибка компиляции
🤔11👍3👏3🤮2
Задача. Поменяйте местами значения переменных без использования промежуточной переменной.

Реализуйте swap(), обменивающую значения двух переменных, не используя третью переменную.

Код с решением будет завтра.

#задача
👍1
Ответ на «Поменяйте местами значения переменных без использования промежуточной переменной.»

Во многих других языках над этой задачей придется подумать, в Go же реализовать ее просто.

package main
import "fmt"
func main() {
fmt.Println(swap())
}
func swap() []int {
a, b := 15, 10
b, a = a, b
return []int{a, b}
}

Достаточно просто включить инструкцию b, a = a, b, на чьи данные будет ссылаться переменная, не взаимодействуя ни с одним из ее значений.

#задача
💩14🔥7👍3🤮3
Наш чат для обсуждения задач: https://t.me/+UA9kQbQdpFxmZGY6
Вопрос с собеседования. Можно ли вернуть из функции несколько значений?

Ответ завтра.

#собеседование
😁33👍4👎4
Ответ на «Можно ли вернуть из функции несколько значений?»

Да. Функции в Go возвращают несколько значений в инструкции return, разделяя их запятыми.

package main
import "fmt"
func main() {
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
fmt.Println(sum)
}

#собеседование
💩28😁18👍2😢2
Задача. Как легче всего проверить срез на пустоту?

Создайте программу, проверяющую срез на пустоту. Найдите самое простое решение.

Код с решением будет завтра.

#задача
💩10👍1
Ответ на «Как легче всего проверить срез на пустоту?»

Легче всего проверить срез на пустоту с помощью встроенной функции len(), которая возвращает длину среза. Если len(slice) == 0, значит срез пуст.

Например:

package main
import "fmt"
func main() {
r := [3]int{1, 2, 3}
if len(r) == 0 {
fmt.Println("Empty!")
} else {
fmt.Println("Not Empty!")
}
}

#задача
😁20👍3👎3🤔1🤯1
Вопрос с собеседования. Что такое замыкания функций?

Ответ завтра.

#собеседование
Ответ на «Что такое замыкания функций?»

Замыкание функции — это значение функции, ссылающееся на переменные вне ее тела. Такая функция может обращаться к этим переменным и присваивать им значения.

Например, adder() возвращает замыкание, привязанное к собственной переменной sum, на которую оно ссылается.

package main
import "fmt"
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}
func main() {
pos, neg := adder(), adder()
for i := 0; i < 10; i++ {
fmt.Println(
pos(i),
neg(-2*i),
)
}
}

#собеседование
👍17💩6🤔2