Learn Go language class methods and object methods from scratch
Apr 03, 2024 am 11:03 AM在 Go 中,類方法與對象方法的主要區(qū)別在于它們的接收器:類方法使用類名調(diào)用,而對象方法需要實例引用。類方法適合全局操作,對象方法適合特定實例操作。步驟:類方法:func 關(guān)鍵字聲明,放在 type 定義中,接收器為類本身。對象方法:func 關(guān)鍵字聲明,放在 type 定義的 func 接收器部分,接收器為實例指針。
Go 語言:從零開始學(xué)習(xí)類方法和對象方法
Go 語言中,我們可以使用類方法和對象方法來實現(xiàn)對象的行為。本文將從頭開始逐步引導(dǎo)您了解這兩種方法之間的區(qū)別以及如何使用它們。
類方法
類方法是綁定到類本身的方法。它們可以通過類名直接調(diào)用,無需創(chuàng)建類實例。在 Go 中,我們使用 func
關(guān)鍵字聲明類方法,并將其放在 type
定義中。
type Person struct { Name string } func (p Person) Greet() { fmt.Println("Hello, my name is " + p.Name) }
上面的示例定義了一個 Person
類型和與之關(guān)聯(lián)的 Greet
類方法。我們可以使用 Person.Greet
直接調(diào)用此方法,而無需創(chuàng)建 Person
實例。
對象方法
對象方法是與類實例相關(guān)的方法。它們只能通過實例調(diào)用,不能通過類名直接調(diào)用。在 Go 中,我們也使用 func
關(guān)鍵字聲明對象方法,但我們會將其放入 type
定義的 func
接收器部分中。
type Person struct { Name string } func (p *Person) SetName(name string) { p.Name = name }
上面的示例定義了一個 Person
類型和一個名為 SetName
的對象方法。此方法需要一個 Person
指針作為接收器,這意味著它只能通過 Person
實例調(diào)用。
實戰(zhàn)案例
以下是一個使用類方法和對象方法的 Go 程序示例:
package main import "fmt" type Person struct { Name string } func (p Person) Greet() { fmt.Println("Hello, my name is " + p.Name) } func (p *Person) SetName(name string) { p.Name = name } func main() { person := Person{Name: "John Doe"} person.Greet() person.SetName("Jane Doe") person.Greet() }
在這個程序中,我們定義了一個 Person
類型及其關(guān)聯(lián)的類方法 Greet
和對象方法 SetName
。我們創(chuàng)建了一個 Person
實例 person
,并使用其 Greet
方法和 SetName
方法對其進(jìn)行操作。
關(guān)鍵區(qū)別
類方法和對象方法之間的主要區(qū)別在于它們的接收器:
-
類方法有一個隱式的
type
接收器,允許它們通過類名直接調(diào)用。 - 對象方法有一個接收器變量,必須是該類型的指針,這使得它們只能通過實例調(diào)用。
總的來說,類方法最適合于全局操作,而對象方法最適合于應(yīng)用于特定實例的操作。
The above is the detailed content of Learn Go language class methods and object methods from scratch. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The problem of using RedisStream to implement message queues in Go language is using Go language and Redis...

What should I do if the custom structure labels in GoLand are not displayed? When using GoLand for Go language development, many developers will encounter custom structure tags...

Queue threading problem in Go crawler Colly explores the problem of using the Colly crawler library in Go language, developers often encounter problems with threads and request queues. ?...

The difference between string printing in Go language: The difference in the effect of using Println and string() functions is in Go...

Which libraries in Go are developed by large companies or well-known open source projects? When programming in Go, developers often encounter some common needs, ...

The library used for floating-point number operation in Go language introduces how to ensure the accuracy is...

Do I need to install an Oracle client when connecting to an Oracle database using Go? When developing in Go, connecting to Oracle databases is a common requirement...

Resource management in Go programming: Mysql and Redis connect and release in learning how to correctly manage resources, especially with databases and caches...
