Методы в 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

Google запускает функцию создания видео с помощью искусственного интеллекта на Gemini

Google запускает функцию создания видео с помощью искусственного интеллекта на Gemini

Компания Google только что объявила, что теперь пользователи могут создавать видеоролики с использованием искусственного интеллекта с помощью чат-бота Gemini и недавно запущенного экспериментального инструмента Whisk.

Инструкции по созданию собственного ИИ-персонажа для общения со всеми

Инструкции по созданию собственного ИИ-персонажа для общения со всеми

Meta AI Studio теперь позволяет вам создать собственного персонажа ИИ, который будет общаться с людьми в стиле персонажа, которого вы создали и разработали самостоятельно.

Россия наложила крупный штраф на Google, сумма которого во много раз превышает мировой ВВП

Россия наложила крупный штраф на Google, сумма которого во много раз превышает мировой ВВП

В судебном споре между Google и Россией из-за блокировки прокремлевских аккаунтов YouTube был вынесен огромный штраф.

Последний код Легендарного героя и как войти

Последний код Легендарного героя и как войти

Путешествие по миру Троецарствия в Legend of the Proud станет проще с серией привлекательных подарочных кодов. Давайте теперь разберемся.

Первый человек, которому в мозг имплантировали ChatGPT для управления электронными устройствами

Первый человек, которому в мозг имплантировали ChatGPT для управления электронными устройствами

ChatGPT тестируется компанией Synchron, одним из пионеров в области чипов для имплантации в мозг (BCI), помогающих пациентам управлять электронными устройствами.

Как искусственный интеллект-генераторы улучшают ваши повседневные фотографии

Как искусственный интеллект-генераторы улучшают ваши повседневные фотографии

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

5 причин, по которым искусственный интеллект Opera Aria полезен

5 причин, по которым искусственный интеллект Opera Aria полезен

Многим людям не нравится ИИ, потому что они хотят самостоятельно считывать необработанные данные и анализировать их. Однако, если вы столкнулись с какой-то утомительной задачей и вам нужны идеи, попробуйте использовать искусственный интеллект Opera Aria. Вот почему искусственный интеллект Aria от Opera так полезен!

Последний код для House of Flying Daggers и как его использовать

Последний код для House of Flying Daggers и как его использовать

Code Thap Dien Mai Phuc дает игрокам Ким Нгуен Бао, Хоан Кхон Хало, золото, Хуен Тинь, сундук Хуен Тинь

Черный миф: Вуконг крадет рекорд из Cyberpunk 2077

Черный миф: Вуконг крадет рекорд из Cyberpunk 2077

Учитывая множество преимущественно положительных отзывов, неудивительно, что Black Myth: Wukong бьет рекорды в Steam.

Узнайте о коде ошибки 0xc00000e и способах ее исправления.

Узнайте о коде ошибки 0xc00000e и способах ее исправления.

Ужасный синий экран смерти (BSOD) с кодом ошибки 0xc00000e, который часто появляется при запуске Windows 10, может сбивать с толку.

Пространство «Играй вместе», назовите пространство «Играй вместе»

Пространство «Играй вместе», назовите пространство «Играй вместе»

Многие люди используют пробелы в своих именах в Play Together или используют маленькие подчеркивания, чтобы создать пробелы между буквами, которые вы пишете в своем имени.

Как скачать Black Beacon PC

Как скачать Black Beacon PC

Хотя Black Beacon вполне можно опробовать на ПК, на данный момент игра официально не оптимизирована для этой платформы.

Формула для расчета площади поверхности и объема сферы

Формула для расчета площади поверхности и объема сферы

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

Что особенного в скафандре, который Китай выбрал для первой высадки человека на Луну?

Что особенного в скафандре, который Китай выбрал для первой высадки человека на Луну?

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

Продукты, которые легко вызывают воспаление в организме

Продукты, которые легко вызывают воспаление в организме

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