Методы в Golang

Зарегистрируйтесь и зарабатывайте 1000$ в день ⋙

Методы в Golang  похожи на функции, но с одним существенным отличием: у них есть аргумент- получатель , который позволяет получить доступ к свойствам получателя . Приемник может иметь тип struct или non-struct, но оба должны находиться в одном пакете. Невозможно создавать методы для типов, определенных в других пакетах, включая встроенные типы, такие как int или string ; В противном случае компилятор сообщит об ошибке.

Методы в Golang

Например:

package main

import "fmt"

// Định nghĩa một struct
type person struct {
    name string
    age  int
}

// Định nghĩa một phương thức với struct receiver
func (p person) display() {
    fmt.Println("Name:", p.name)
    fmt.Println("Age:", p.age)
}

func main() {
    // Tạo một phiên bản của struct
    a := person{name: "a", age: 25}
    
    // Gọi phương thức
    a.display()
}

Результат:

Name: a
Age: 25

Синтаксис

func(receiver_name Type)  method_name(parameter_list) (return_type) { 
// Code
}

Приемник: Доступ к нему можно получить с помощью этого метода.

Метод с приемником структурного типа

В Go можно определить метод, в котором получатель имеет тип struct. Приемник доступен внутри метода. Предыдущий пример иллюстрирует этот подход с помощью Receiver типа struct.

Метод с приемником не является структурным типом

Go также позволяет методам иметь неструктурные приемники, если тип приемника и определение метода находятся в одном пакете. Вы не можете определить метод с типом приемника из другого пакета (например, int, string).

Например:

package main

import "fmt"

// Tạo một kiểu tùy biến dựa trên int
type number int

// Định nghĩa một phương thức với receiver không phải struct
func (n number) square() number {
    return n * n
}

func main() {
    a := number(4)
    b := a.square()

    fmt.Println("Square of", a, "is", b)
}

Результат:

Square of 4 is 16

Метод с указателем приемника

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

Синтаксис:

func (p *Type) method_name(...Type) Type {    // Code}

Например:

package main

import "fmt"

// Defining a struct
type person struct {
    name string
}

// Phương thức với receiver pointer để chỉnh sửa dữ liệu
func (p *person) changeName(newName string) {
    p.name = newName
}

func main() {
    a := person{name: "a"}
    
    fmt.Println("Before:", a.name)
    
    // Gọi phương thức này để thay đổi tên
    a.changeName("b")
    
    fmt.Println("After:", a.name)
}

Результат:

Before: a
After: b

Метод принимает как указатель, так и значение.

В отличие от функций, методы Go могут принимать как значения, так и указатели. Вы можете передавать указатели или значения, и метод будет обрабатывать их соответствующим образом.

Например:

package main
import "fmt"

type person struct {
    name string
}
// Phương thức với receiver pointer
func (p *person) updateName(newName string) {
    p.name = newName
}

// Phương thức với receiver value 
func (p person) showName() {
    fmt.Println("Name:", p.name)
}

func main() {
    a := person{name: "a"}
    
    // Gọi phương thức con trỏ cùng giá trị
    a.updateName("b")
    fmt.Println("After pointer method:", a.name)
    
    // Gọi phương thức giá trị với con trỏ
    (&a).showName()
}

Результат:

After pointer method: b
Name: b

Разница между методом и функцией

Метод Челюсть
Содержит приемник. Не содержит приемник
Можно определить методы с одинаковым именем, но разными типами. Функции с одинаковыми именами, но разными типами не допускаются.
Не может использоваться в качестве превосходной степени. Могут использоваться как объекты высшего порядка
Sign up and earn $1000 a day ⋙

Leave a Comment

Как восстановить доступ к жесткому диску, исправить ошибку невозможности открыть жесткий диск

Как восстановить доступ к жесткому диску, исправить ошибку невозможности открыть жесткий диск

В этой статье мы расскажем, как восстановить доступ к жёсткому диску в случае его сбоя. Давайте пойдём дальше!

Как использовать функции Conversation Awareness и Live Listening на AirPods

Как использовать функции Conversation Awareness и Live Listening на AirPods

На первый взгляд AirPods выглядят как любые другие беспроводные наушники. Но всё изменилось, когда были обнаружены несколько малоизвестных особенностей.

Все об iOS 26

Все об iOS 26

Apple представила iOS 26 — крупное обновление с совершенно новым дизайном «матовое стекло», более интеллектуальным интерфейсом и улучшениями в знакомых приложениях.

Лучшие ноутбуки для студентов в 2025 году

Лучшие ноутбуки для студентов в 2025 году

Студентам нужен определённый тип ноутбука для учёбы. Он должен быть не только достаточно мощным для успешной работы на выбранной специальности, но и достаточно компактным и лёгким, чтобы его можно было носить с собой весь день.

Как добавить принтер в Windows 10

Как добавить принтер в Windows 10

Добавить принтер в Windows 10 просто, хотя процесс для проводных устройств будет отличаться от процесса для беспроводных устройств.

Как проверить оперативную память и ошибки оперативной памяти на компьютере с максимальной точностью

Как проверить оперативную память и ошибки оперативной памяти на компьютере с максимальной точностью

Как вы знаете, оперативная память (ОЗУ) — очень важный компонент компьютера, выполняющий функцию памяти для обработки данных и определяющий скорость работы ноутбука или ПК. В статье ниже WebTech360 расскажет вам о нескольких способах проверки оперативной памяти на наличие ошибок с помощью программного обеспечения в Windows.

Разница между обычным телевизором и Smart TV

Разница между обычным телевизором и Smart TV

Умные телевизоры действительно покорили мир. Благодаря множеству замечательных функций и возможности подключения к Интернету технологии изменили то, как мы смотрим телевизор.

Почему в морозильной камере нет подсветки, а в холодильнике есть?

Почему в морозильной камере нет подсветки, а в холодильнике есть?

Холодильники — привычные бытовые приборы. Холодильники обычно имеют 2 отделения: холодильное отделение просторное и имеет подсветку, которая автоматически включается каждый раз, когда пользователь ее открывает, а морозильное отделение узкое и не имеет подсветки.

2 способа устранения перегрузки сети, которая замедляет Wi-Fi

2 способа устранения перегрузки сети, которая замедляет Wi-Fi

На сети Wi-Fi влияют многие факторы, помимо маршрутизаторов, пропускной способности и помех, но есть несколько разумных способов улучшить работу вашей сети.

Как перейти с iOS 17 на iOS 16 без потери данных с помощью Tenorshare Reiboot

Как перейти с iOS 17 на iOS 16 без потери данных с помощью Tenorshare Reiboot

Если вы хотите вернуться к стабильной версии iOS 16 на своем телефоне, вот базовое руководство по удалению iOS 17 и понижению версии с iOS 17 до 16.

Что происходит с организмом, если вы едите йогурт каждый день?

Что происходит с организмом, если вы едите йогурт каждый день?

Йогурт — замечательная еда. Полезно ли есть йогурт каждый день? Как изменится ваше тело, если вы будете есть йогурт каждый день? Давайте узнаем вместе!

Какой вид риса лучше всего подходит для здоровья?

Какой вид риса лучше всего подходит для здоровья?

В этой статье рассматриваются наиболее питательные виды риса и способы максимально увеличить пользу для здоровья любого выбранного вами вида риса.

Как просыпаться вовремя утром

Как просыпаться вовремя утром

Установление режима сна и отхода ко сну, смена будильника и корректировка рациона питания — вот некоторые из мер, которые помогут вам лучше спать и вовремя просыпаться по утрам.

Советы по игре Rent Please! Симулятор арендодателя для новичков

Советы по игре Rent Please! Симулятор арендодателя для новичков

Арендуйте, пожалуйста! Landlord Sim — мобильная игра-симулятор для iOS и Android. Вы будете играть за владельца жилого комплекса и начнете сдавать квартиры в аренду, чтобы улучшить интерьер своих апартаментов и подготовить их к приему арендаторов.

Последние коды защиты башни в ванной и как вводить коды

Последние коды защиты башни в ванной и как вводить коды

Получите игровой код Bathroom Tower Defense Roblox и обменяйте его на потрясающие награды. Они помогут вам улучшить или разблокировать башни с более высоким уроном.