Metode în Golang

Metodele din Golang  sunt ca funcții, dar cu o diferență majoră: au un argument receptor , care permite accesul la proprietățile receptorului . Receptorul poate fi de tip struct sau non-struct, dar ambele trebuie să fie în același pachet. Nu este posibil să se creeze metode pentru tipurile definite în alte pachete, inclusiv tipurile încorporate precum int sau string ; În caz contrar, compilatorul va raporta o eroare.

Metode în Golang

De exemplu:

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

Rezultat:

Name: a
Age: 25

Sintaxă

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

Receptor: poate fi accesat folosind această metodă.

Metodă cu receptor de tip struct

În Go, puteți defini o metodă în care receptorul este de tip struct. Receptorul este accesibil în cadrul metodei. Exemplul anterior ilustrează această abordare cu un receptor de tip struct.

Metoda cu Receiver nu este de tip struct

Go permite, de asemenea, metodelor să aibă receptori non-struct, atâta timp cât tipul de receptor și definiția metodei sunt în același pachet. Nu puteți defini o metodă cu un tip de receptor dintr-un alt pachet (de exemplu, int, șir).

De exemplu:

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

Rezultat:

Square of 4 is 16

Metoda cu pointer receptor

În Go, metodele pot avea receptori pointer. Acest lucru permite ca modificările făcute în metodă să fie reflectate în apelant, ceea ce nu este posibil cu receptorii de valoare.

Sintaxă:

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

De exemplu:

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

Rezultat:

Before: a
After: b

Metoda acceptă atât pointer, cât și valoare

Spre deosebire de funcții, metodele Go pot accepta atât receptori de valoare, cât și de tip pointer. Puteți trece indicatori sau valori, iar metoda se va descurca în consecință.

De exemplu:

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

Rezultat:

After pointer method: b
Name: b

Diferența dintre metodă și funcție

Metodă Falca
Conține un receptor Nu contine receptor
Este posibil să se definească metode cu același nume, dar tipuri diferite. Nu sunt permise funcții cu același nume, dar tipuri diferite.
Nu poate fi folosit ca superlativ Poate fi folosit ca obiecte superordonate
Sign up and earn $1000 a day ⋙

Leave a Comment

Diferența dintre televizorul obișnuit și Smart TV

Diferența dintre televizorul obișnuit și Smart TV

Televizoarele inteligente au luat cu adevărat lumea cu asalt. Cu atât de multe funcții grozave și conectivitate la internet, tehnologia a schimbat modul în care ne uităm la televizor.

De ce congelatorul nu are lumină, dar frigiderul are?

De ce congelatorul nu are lumină, dar frigiderul are?

Frigiderele sunt aparate cunoscute în gospodării. Frigiderele au de obicei 2 compartimente, compartimentul cool este spatios si are o lumina care se aprinde automat de fiecare data cand utilizatorul il deschide, in timp ce compartimentul congelator este ingust si nu are lumina.

2 moduri de a remedia congestionarea rețelei care încetinește conexiunea Wi-Fi

2 moduri de a remedia congestionarea rețelei care încetinește conexiunea Wi-Fi

Rețelele Wi-Fi sunt afectate de mulți factori, dincolo de routere, lățime de bandă și interferențe, dar există câteva modalități inteligente de a vă îmbunătăți rețeaua.

Cum să downgrade de la iOS 17 la iOS 16 fără a pierde date folosind Tenorshare Reiboot

Cum să downgrade de la iOS 17 la iOS 16 fără a pierde date folosind Tenorshare Reiboot

Dacă doriți să reveniți la iOS 16 stabil pe telefonul dvs., iată ghidul de bază pentru dezinstalarea iOS 17 și downgrade de la iOS 17 la 16.

Ce se întâmplă cu organismul când mănânci iaurt în fiecare zi?

Ce se întâmplă cu organismul când mănânci iaurt în fiecare zi?

Iaurtul este un aliment minunat. Este bine să mănânci iaurt în fiecare zi? Când mănânci iaurt în fiecare zi, cum se va schimba corpul tău? Să aflăm împreună!

Ce tip de orez este cel mai bun pentru sănătate?

Ce tip de orez este cel mai bun pentru sănătate?

Acest articol discută cele mai hrănitoare tipuri de orez și cum să maximizați beneficiile pentru sănătate ale orezului pe care îl alegeți.

Cum să te trezești la timp dimineața

Cum să te trezești la timp dimineața

Stabilirea unui program de somn și a rutinei de culcare, schimbarea ceasului cu alarmă și ajustarea dietei sunt câteva dintre măsurile care vă pot ajuta să dormiți mai bine și să vă treziți la timp dimineața.

Sfaturi pentru a juca Rent Please! Proprietar Sim pentru începători

Sfaturi pentru a juca Rent Please! Proprietar Sim pentru începători

Inchiriez va rog! Landlord Sim este un joc mobil de simulare pe iOS și Android. Veți juca ca proprietarul unui complex de apartamente și veți începe să închiriați un apartament cu scopul de a îmbunătăți interiorul apartamentelor și de a le pregăti pentru chiriași.

Cele mai recente coduri de apărare a turnului de baie și cum să introduceți codurile

Cele mai recente coduri de apărare a turnului de baie și cum să introduceți codurile

Obțineți codul de joc Roblox Bathroom Tower Defense și răscumpărați pentru recompense interesante. Ele vă vor ajuta să faceți upgrade sau să deblocați turnuri cu daune mai mari.

Structura, simbolurile și principiile de funcționare ale transformatoarelor

Structura, simbolurile și principiile de funcționare ale transformatoarelor

Să învățăm despre structura, simbolurile și principiile de funcționare ale transformatoarelor în cel mai precis mod.

4 moduri prin care AI face televizoarele inteligente mai bune

4 moduri prin care AI face televizoarele inteligente mai bune

De la o calitate mai bună a imaginii și a sunetului la controlul vocal și multe altele, aceste funcții bazate pe inteligență artificială fac televizoarele inteligente mult mai bune!

De ce ChatGPT este mai bun decât DeepSeek

De ce ChatGPT este mai bun decât DeepSeek

Inițial, oamenii aveau mari speranțe în DeepSeek. Fiind un chatbot AI comercializat ca un concurent puternic pentru ChatGPT, acesta promite capacități și experiențe inteligente de chat.

Faceți cunoștință cu Fireflies.ai: Secretarul AI gratuit care vă scutește de ore de muncă

Faceți cunoștință cu Fireflies.ai: Secretarul AI gratuit care vă scutește de ore de muncă

Este ușor să ratezi detalii importante atunci când notezi alte elemente esențiale, iar încercarea de a lua notițe în timpul conversației poate fi distragerea atenției. Fireflies.ai este soluția.

Cum să crești Axolotl Minecraft, îmblânziți Minecraft Salamander

Cum să crești Axolotl Minecraft, îmblânziți Minecraft Salamander

Axolot Minecraft va fi un asistent excelent pentru jucători atunci când operează sub apă, dacă știu să le folosească.

A Quiet Place: The Road Ahead Configurația jocului PC

A Quiet Place: The Road Ahead Configurația jocului PC

Un loc liniștit: configurația Road Ahead este foarte apreciată, așa că va trebui să luați în considerare configurația înainte de a decide să descărcați.