Menu
Coddy logo textTech

Введение в ООП в Go

Часть раздела Объектно-ориентированное программирование путешествия по GO на Coddy — урок 5 из 107.

В Go нет классов, но объектно-ориентированное программирование реализуется с помощью структур и методов. Структура группирует связанные данные, а методы определяют поведение, связанное с этой структурой.

Определите структуру для хранения данных

type Dog struct {
    Name string
    Age  int
}

Прикрепите метод к структуре

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

Создайте экземпляр и используйте его

package main

import "fmt"

type Dog struct {
    Name string
    Age  int
}

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

func main() {
    myDog := Dog{Name: "Buddy", Age: 3}
    fmt.Println(myDog.Bark()) // Output: Buddy says Woof!
    fmt.Println(myDog.Age)    // Output: 3
}

В Go часть (d Dog) перед именем метода называется получателем (receiver). Она связывает метод со структурой Dog, подобно тому как методы принадлежат классам в других языках.

challenge icon

Задание

Легко

Создайте структуру Cat с методом, чтобы попрактиковаться в подходе Go к ООП:

  • Определите структуру Cat с полями Name (string) и Age (int)
  • Добавьте метод Speak, который возвращает имя кошки, за которым следует " says Meow!"

Шпаргалка

Go реализует объектно-ориентированное программирование с помощью структур (structs) и методов. Структура группирует связанные данные, а методы определяют поведение, привязанное к этой структуре.

Определите структуру для хранения данных:

type Dog struct {
    Name string
    Age  int
}

Прикрепите метод к структуре, используя получатель (receiver):

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

Часть (d Dog) перед именем метода — это получатель, который связывает метод со структурой.

Создайте экземпляр и используйте его:

myDog := Dog{Name: "Buddy", Age: 3}
fmt.Println(myDog.Bark()) // Output: Buddy says Woof!
fmt.Println(myDog.Age)    // Output: 3

Попробуйте сами

package main

import "fmt"

func main() {
    var name string
    var age int
    fmt.Scan(&name, &age)

    cat := Cat{Name: name, Age: age}

    fmt.Printf("Name: %s\n", cat.Name)
    fmt.Printf("Age: %d\n", cat.Age)
    fmt.Println(cat.Speak())
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование