ホームページ  >  記事  >  バックエンド開発  >  Golang のメソッド呼び出しの詳細

Golang のメソッド呼び出しの詳細

PHPz
PHPzオリジナル
2023-04-11 10:39:37555ブラウズ

Go 言語は、強力でわかりやすく使いやすいプログラミング言語であり、優れた同時処理とメモリ管理メカニズムで有名です。 Go では、メソッドは、関連付けられたレシーバー タイプを持つ特別な関数です。この記事では、Golang のメソッド呼び出しについて詳しく説明します。

メソッドの基礎知識

メソッドは、同様のオブジェクトを操作するために特別に設計された関数です。 Golang では、メソッドは型に関連付けられた関数を指します。このタイプは、構造体、基本タイプ、インターフェイス タイプ、またはその他のカスタム タイプにすることができます。メソッドには、値レシーバーとポインター レシーバーの 2 種類があります。値レシーバーは値型のメソッドを定義するために使用され、ポインター レシーバーはポインター型のメソッドを定義するために使用されます。

Golang では、メソッドは型の前に関数名を宣言することで定義されます。メソッド名は CamelCase の命名規則に従う必要があります。つまり、最初の文字が大文字になります。メソッドを作成するには、関数の引数リストにレシーバーの型と変数名を追加します。次の例は、メソッドを定義する方法を示しています。

type Person struct {
    Name string
}

func (p Person) SayHello() {
    fmt.Printf("Hello, my name is %s.\n", p.Name)
}

上記のコードでは、Person 構造タイプが定義され、SayHello() メソッドを使用して人の名前が出力されます。

メソッド呼び出し

Go言語ではオブジェクトメソッドを使って操作を行うことができますが、メソッドの呼び出し方法には値レシーバーとポインタレシーバーの2種類があります。

値受信メソッドは次のように呼び出されます:

package main

import "fmt"

type Rectangle struct {
    length, width float64
}

func (r Rectangle) Area() float64 {
    return r.length * r.width
}

func main() {
    r := Rectangle{10, 5}
    fmt.Println("Rectangle Area:", r.Area())
}

上記のコードでは、長方形タイプ Rectangle を定義し、その領域を取得するための Area() メソッドを実装します。矩形。 main() 関数では、Rectangle 型の変数 r を作成し、r.Area() を使用して長方形の面積を取得します。

ポインタ レシーバ メソッドを呼び出す方法は次のとおりです。

package main

import "fmt"

type Rectangle struct {
    length, width float64
}

func (r *Rectangle) Area() float64 {
    return r.length * r.width
}

func main() {
    r := &Rectangle{10, 5}
    fmt.Println("Rectangle Area:", r.Area())
}

上記のコードでは、Rectangle 型のポインタ レシーバの Area() メソッドを実装し、&r を使用します。 .Area() で長方形の面積を取得します。

概要

Golang では、メソッドは型に関連付けられた関数を指します。メソッドには、値レシーバーとポインター レシーバーの 2 種類があります。値レシーバ メソッドは直接呼び出されますが、ポインタ レシーバ メソッドはポインタを使用して呼び出す必要があります。メソッドはオブジェクト指向プログラミングの基礎であり、Golang プログラミング言語を理解して使用するにはメソッドの知識が不可欠です。

以上がGolang のメソッド呼び出しの詳細の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。