Структуры и интерфейсы в Go
Структуры
Структура — это тип, содержащий именованные поля
							 type Circle struct { 
							 x float64 
							 y float64 
							 r float64 
							 } 
						
Создание и инициализация
							 1. var circle Circle 
							 2. circle := new(Circle) 
							 3. circle := Circle{x: 0, y: 0, r: 5} 
						
Поля
Получить доступ к полям можно с помощью оператора . (точка)
							 circle.x = 10 
							 circle.y = 4 
							 circle.r = 3 
						
Методы
Между ключевым словом func и именем функции мы добавили «получателя»
Получатель похож на параметр — у него есть имя и тип
							 func (circle *Circle) area() float64 { 
							 return math.Pi * circle.r * circle.r 
							 } 
						
Объявление функции таким способом позволяет нам вызывать функцию с помощью оператора . (точка)
							 fmt.Println(circle.area()) 
						
Интерфейсы
Интерфейс - программная/синтаксическая структура, определяющая отношение между объектами, которые разделяют определенное поведенческое множество и не связаны никак иначе
							 type geometry interface { 
							 area() float64 
							 perimeter() float64 
							 } 
						

Презентация и исходный код

github.com/lowl-io/screencast