Metody w Golangu

Metody w języku Go  są podobne do funkcji, z jedną zasadniczą różnicą: mają argument odbiorcy , który umożliwia dostęp do właściwości odbiorcy . Odbiornik może być typu struct lub non-struct, ale oba muszą znajdować się w tym samym pakiecie. Nie można tworzyć metod dla typów zdefiniowanych w innych pakietach, w tym dla typów wbudowanych, takich jak int lub string ; W przeciwnym wypadku kompilator zgłosi błąd.

Metody w Golangu

Na przykład:

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()
}

Wynik:

Name: a
Age: 25

Składnia

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

Odbiornik: Można uzyskać do niego dostęp za pomocą tej metody.

Metoda z odbiornikiem typu struktury

W języku Go można zdefiniować metodę, w której odbiorca jest typu struct. Odbiornik jest dostępny wewnątrz metody. Poprzedni przykład ilustruje to podejście na przykładzie odbiornika typu struct.

Metoda z odbiornikiem nie jest typem struktury

Język Go pozwala również na posiadanie przez metody odbiorników niebędących strukturami, pod warunkiem, że typ odbiornika i definicja metody znajdują się w tym samym pakiecie. Nie można zdefiniować metody z typem odbiornika z innego pakietu (np. int, string).

Na przykład:

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)
}

Wynik:

Square of 4 is 16

Metoda ze wskaźnikiem odbiornika

W języku Go metody mogą mieć odbiorniki wskaźników. Dzięki temu zmiany wprowadzone w metodzie mogą być odzwierciedlone w programie wywołującym, co nie jest możliwe w przypadku odbiorników wartości.

Składnia:

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

Na przykład:

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)
}

Wynik:

Before: a
After: b

Metoda akceptuje zarówno wskaźnik, jak i wartość

W przeciwieństwie do funkcji, metody języka Go mogą akceptować zarówno odbiorniki wartości, jak i wskaźniki. Możesz przekazać wskaźniki lub wartości, a metoda obsłuży je odpowiednio.

Na przykład:

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()
}

Wynik:

After pointer method: b
Name: b

Różnica między metodą a funkcją

Metoda Szczęka
Zawiera odbiornik Nie zawiera odbiornika
Można zdefiniować metody o tej samej nazwie, ale różnych typach. Nie są dozwolone funkcje o tej samej nazwie, ale różnych typach.
Nie można używać jako stopnia najwyższego Można używać jako obiektów nadrzędnych
Sign up and earn $1000 a day ⋙

Leave a Comment

Różnica między zwykłym telewizorem a Smart TV

Różnica między zwykłym telewizorem a Smart TV

Telewizory Smart TV naprawdę podbiły świat. Dzięki tak wielu świetnym funkcjom i możliwościom połączenia z Internetem technologia zmieniła sposób, w jaki oglądamy telewizję.

Dlaczego zamrażarka nie ma światła, a lodówka tak?

Dlaczego zamrażarka nie ma światła, a lodówka tak?

Lodówki to powszechnie stosowane urządzenia gospodarstwa domowego. Lodówki zazwyczaj mają dwie komory: komora chłodna jest pojemna i posiada światło, które włącza się automatycznie po każdym otwarciu lodówki, natomiast komora zamrażarki jest wąska i nie posiada światła.

2 sposoby na naprawę przeciążenia sieci, które spowalnia sieć Wi-Fi

2 sposoby na naprawę przeciążenia sieci, które spowalnia sieć Wi-Fi

Na działanie sieci Wi-Fi wpływa wiele czynników poza routerami, przepustowością i zakłóceniami. Istnieje jednak kilka sprytnych sposobów na usprawnienie działania sieci.

Jak obniżyć wersję iOS 17 do iOS 16 bez utraty danych za pomocą Tenorshare Reiboot

Jak obniżyć wersję iOS 17 do iOS 16 bez utraty danych za pomocą Tenorshare Reiboot

Jeśli chcesz powrócić do stabilnej wersji iOS 16 na swoim telefonie, poniżej znajdziesz podstawowy przewodnik, jak odinstalować iOS 17 i obniżyć wersję iOS 17 do 16.

Co dzieje się z organizmem, gdy codziennie jesz jogurt?

Co dzieje się z organizmem, gdy codziennie jesz jogurt?

Jogurt jest wspaniałym produktem spożywczym. Czy warto jeść jogurt codziennie? Jak zmieni się Twoje ciało, gdy będziesz jeść jogurt codziennie? Przekonajmy się razem!

Który rodzaj ryżu jest najlepszy dla zdrowia?

Który rodzaj ryżu jest najlepszy dla zdrowia?

W tym artykule omówiono najbardziej odżywcze rodzaje ryżu i dowiesz się, jak zmaksymalizować korzyści zdrowotne, jakie daje wybrany przez Ciebie rodzaj ryżu.

Jak obudzić się rano na czas

Jak obudzić się rano na czas

Ustalenie harmonogramu snu i rutyny związanej z kładzeniem się spać, zmiana budzika i dostosowanie diety to niektóre z działań, które mogą pomóc Ci lepiej spać i budzić się rano o odpowiedniej porze.

Wskazówki dotyczące gry Rent Please! Symulator wynajmującego dla nowicjuszy

Wskazówki dotyczące gry Rent Please! Symulator wynajmującego dla nowicjuszy

Proszę o wynajem! Landlord Sim to mobilna gra symulacyjna dostępna na systemy iOS i Android. Wcielisz się w rolę właściciela kompleksu apartamentowego i wynajmiesz mieszkania, a Twoim celem jest odnowienie wnętrz apartamentów i przygotowanie ich na przyjęcie najemców.

Najnowsze kody do obrony wieży łazienkowej i jak je wprowadzać

Najnowsze kody do obrony wieży łazienkowej i jak je wprowadzać

Zdobądź kod do gry Bathroom Tower Defense Roblox i wymień go na atrakcyjne nagrody. Pomogą ci ulepszyć lub odblokować wieże zadające większe obrażenia.

Budowa, symbole i zasady działania transformatorów

Budowa, symbole i zasady działania transformatorów

Poznajmy budowę, symbole i zasady działania transformatorów w jak najbardziej dokładny spos��b.

4 sposoby, w jakie sztuczna inteligencja ulepsza inteligentne telewizory

4 sposoby, w jakie sztuczna inteligencja ulepsza inteligentne telewizory

Od lepszej jakości obrazu i dźwięku po sterowanie głosowe i wiele więcej — te funkcje oparte na sztucznej inteligencji sprawiają, że inteligentne telewizory stają się o wiele lepsze!

Dlaczego ChatGPT jest lepszy niż DeepSeek

Dlaczego ChatGPT jest lepszy niż DeepSeek

Początkowo ludzie wiązali duże nadzieje z DeepSeek. Jako chatbot oparty na sztucznej inteligencji, reklamowany jako silny konkurent ChatGPT, obiecuje inteligentne możliwości i doświadczenia związane z czatem.

Poznaj Fireflies.ai: darmową sekretarkę AI, która zaoszczędzi Ci godzin pracy

Poznaj Fireflies.ai: darmową sekretarkę AI, która zaoszczędzi Ci godzin pracy

Łatwo jest przegapić ważne szczegóły podczas zapisywania innych istotnych informacji, a próba robienia notatek podczas rozmowy może być rozpraszająca. Rozwiązaniem jest Fireflies.ai.

Jak hodować aksolotla w Minecraft, oswoić salamandrę w Minecraft

Jak hodować aksolotla w Minecraft, oswoić salamandrę w Minecraft

Axolot Minecraft będzie świetnym pomocnikiem dla graczy operujących pod wodą, jeśli tylko będą umieli się nim posługiwać.

Konfiguracja gry A Quiet Place: The Road Ahead na PC

Konfiguracja gry A Quiet Place: The Road Ahead na PC

Konfiguracja gry A Quiet Place: The Road Ahead została oceniona dość wysoko, dlatego też przed podjęciem decyzji o pobraniu należy wziąć ją pod uwagę.