Практика на интерфейсы в Go
Дана структура:
package main
import "fmt"
type Message struct {
Body string
}
Объявите интерфейс Shower с методом
Show, повесьте метод на Message,
положите значение с телом "ping"
в Shower и выведите результат
вызова Show.
Дан следующий код:
package main
import "fmt"
type Speaker interface {
Speak() string
}
type Cat struct {
Name string
}
func (c Cat) Speak() string {
return "meow"
}
func announce(s Speaker) {
fmt.Println(s.Speak())
}
Создайте Cat с именем "mila",
передайте его в announce и выведите
то, что вернет метод.
Даны объявления:
package main
type Meter interface {
Read() int
Reset()
}
type Gauge struct {
level int
}
func (g Gauge) Read() int {
return g.level
}
Добавьте Reset с получателем-указателем,
который обнуляет level, и скажите,
соберется ли var m Meter = Gauge{level: 5}.
Дано значение:
package main
import "fmt"
type Box struct {
Tag string
}
func (b Box) String() string {
return b.Tag
}
item := Box{Tag: "A1"}
Выведите item одной командой печати
и скажите, откуда возьмется текст на экране.
Дан следующий код:
package main
import "fmt"
var holder any = 100
Достаньте int с ok, при
успехе выведите число, иначе выведите
"miss".
Напишите функцию describe с параметром
any, которая через переключатель
типов выводит "text" для string,
"number" для int и "else"
в остальных случаях. Проверьте на строке
и на числе.