Пустой интерфейс в Go
Пустой интерфейс не требует ни одного метода,
поэтому в него входит любое значение. В
объявлении после слова interface
стоят пустые фигурные скобки без списка
методов. Такой тип принимает и числа, и
строки, и структуры, и указатели.
В стандартной библиотеке для него есть короткое
имя any: это то же самое, что пустой
интерфейс, только запись короче. Старую форму
interface{} в новых примерах обычно
заменяют на any.
Положим в одну переменную разные значения:
package main
import "fmt"
func main() {
var box any
box = 10
fmt.Println(box)
box = "hi"
fmt.Println(box)
box = true
fmt.Println(box)
}
В box по очереди оказываются int,
string и bool. Каждый раз
внутри меняются и тип, и содержимое. Снаружи
тип переменной остается any, поэтому
конкретные методы напрямую не видны, пока
тип не проверят отдельно.
Создайте any, запишите в него
42, затем "go", и выведите
переменную после каждого присваивания.
Дано значение:
package main
type Point struct {
X int
Y int
}
Запишите Point с координатами
1 и 2 в переменную any
и выведите ее.
Скажите, сколько методов должно быть у
типа, чтобы его положили в any.