Ответ на «Расскажите об интерфейсах в 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
👍16
Задача. Реализуйте поведение min и max.
Реализуйте функции
Код с решением будет завтра.
#задача
Реализуйте функции
Min(x, y int)
и Max(x, y int)
, получающие два целых числа и возвращающих меньшее или большее значение соответственно.Код с решением будет завтра.
#задача
💩11🤔4🔥1