РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
457 of 1593 menu

Методы структуры

Метод структуры - это функция, которая привязана к определенному типу структуры. В первом параметре указывается получатель (receiver) - переменная структуры, к которой привязывается метод. Методы позволяют организовать поведение объектов и реализовать интерфейсы.

Синтаксис

func (receiver Type) MethodName(params) returnType { // тело метода }

Пример

Объявим структуру Person и метод для вывода информации о человеке:

package main import "fmt" type Person struct { Name string Age int } func (p Person) PrintInfo() { fmt.Printf("Name: %s, Age: %d\n", p.Name, p.Age) } func main() { person := Person{Name: "Alice", Age: 30} person.PrintInfo() }

Результат выполнения кода:

"Name: Alice, Age: 30"

Пример

Метод может принимать параметры и возвращать значения. Например, метод для расчета возраста через несколько лет:

package main import "fmt" type Person struct { Name string Age int } func (p Person) AgeInYears(years int) int { return p.Age + years } func main() { person := Person{Name: "Bob", Age: 25} res := person.AgeInYears(5) fmt.Println(res) }

Результат выполнения кода:

30

Пример

Метод может изменять состояние структуры, если использовать указатель в качестве получателя:

package main import "fmt" type Person struct { Name string Age int } func (p *Person) IncreaseAge() { p.Age++ } func main() { person := Person{Name: "Charlie", Age: 40} person.IncreaseAge() fmt.Println(person.Age) }

Результат выполнения кода:

41

Пример

Методы могут быть объявлены для любого типа, а не только для структур. Например, для пользовательского типа на основе int:

package main import "fmt" type MyInt int func (m MyInt) IsPositive() bool { return m > 0 } func main() { num := MyInt(10) res := num.IsPositive() fmt.Println(res) }

Результат выполнения кода:

true

Пример

Методы структур могут вызывать друг друга. Например, метод для изменения имени вызывает метод для вывода информации:

package main import "fmt" type Person struct { Name string Age int } func (p *Person) SetName(name string) { p.Name = name } func (p Person) PrintInfo() { fmt.Printf("Name: %s, Age: %d\n", p.Name, p.Age) } func main() { person := Person{Name: "David", Age: 35} person.PrintInfo() person.SetName("Daniel") person.PrintInfo() }

Результат выполнения кода:

"Name: David, Age: 35" "Name: Daniel, Age: 35"

Смотрите также

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить