Ответ на «Переверните порядок элементов в срезе.»
#задача
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 для различных мессенджеров.
Читать далее
💎 Чат: @golang_talks
Привет, я Паша, руковожу эксплуатацией инфраструктуры крупного хайлоад-проекта. Хочу поделиться опытом разработки бота на Golang для различных мессенджеров.
Читать далее
👍3
Вопрос с собеседования. Расскажите об интерфейсах в Go. Чем они являются и как работают?
Ответ завтра.
#собеседование
Ответ завтра.
#собеседование
👍13🔥3
Ответ на «Расскажите об интерфейсах в Go. Чем они являются и как работают?»
Интерфейсы — это особый тип в Go, который определяет набор сигнатур методов, но не представляет реализации. Значения типа
Интерфейсы, по сути, действуют как плейсхолдеры для методов, которые будут иметь несколько реализаций в зависимости от того, какой объект их использует.
Например, можно реализовать интерфейс
Интерфейсы — это особый тип в Go, который определяет набор сигнатур методов, но не представляет реализации. Значения типа
interface
могут содержать любое значение, реализующее эти методы.Интерфейсы, по сути, действуют как плейсхолдеры для методов, которые будут иметь несколько реализаций в зависимости от того, какой объект их использует.
Например, можно реализовать интерфейс
geometry
, который будет утверждать, что все фигуры, использующие этот интерфейс, должны реализовывать area()
и perim()
.type geometry interface {#собеседование
area() float64
perim() float64
}
👎9🔥3👍1
😁15👍4
🔥3🤮2👏1
🤔11👍3👏3🤮2
Задача. Поменяйте местами значения переменных без использования промежуточной переменной.
Реализуйте
Код с решением будет завтра.
#задача
Реализуйте
swap()
, обменивающую значения двух переменных, не используя третью переменную.Код с решением будет завтра.
#задача
👍1
Ответ на «Поменяйте местами значения переменных без использования промежуточной переменной.»
Во многих других языках над этой задачей придется подумать, в Go же реализовать ее просто.
#задача
Во многих других языках над этой задачей придется подумать, в 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
😁33👍4👎4
Ответ на «Можно ли вернуть из функции несколько значений?»
Да. Функции в Go возвращают несколько значений в инструкции
Да. Функции в 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