Go言語のメソッドと関数の違いを深く理解する

王林
リリース: 2024-04-03 11:15:02
オリジナル
735 人が閲覧しました

Go 言語では、メソッドは特定の型に関連付けられます。メソッド名にはレシーバー パラメーターがあり、特定の型のインスタンスを操作するために使用されますが、関数はどの型にも関連付けられておらず、変数を受け取る独立したコード ブロックです。通常のパラメータまたは値の形式。

Go言語のメソッドと関数の違いを深く理解する

#Go 言語のメソッドと関数の違い

はじめに

Go 言語では、メソッドと関数はコード内の 2 つの重要な概念であり、効果的で保守可能なコードを作成するには、これらの違いを理解することが重要です。この記事では、メソッドと関数の違いを詳しく説明し、実際の例を示して説明します。

メソッド

メソッドは、特定の型のインスタンスを操作できるようにする、型に関連付けられた関数です。メソッドはレシーバーを使用します。レシーバーは、操作対象のオブジェクトを指定するメソッドのパラメーターです。メソッド名の構文は次のとおりです:

func (t Type) methodName(parameters) returnType
ログイン後にコピー

例:

// 定义一个 Person 类型
type Person struct {
    name string
    age  int
}

// 为 Person 类型定义一个 greet 方法
func (p Person) greet() string {
    return fmt.Sprintf("Hello, my name is %s", p.name)
}
ログイン後にコピー

この例では、

greet メソッドのタイプは person# です。 ## アソシエーション。 Person インスタンスを受信者として受け入れます。

関数

関数は、どのタイプにも依存しない、独立したコード ブロックです。これらはレシーバーではなく通常のパラメーターを受け取り、あらゆるタイプの変数または値を操作できます。関数名には次の構文が使用されます:

func functionName(parameters) returnType
ログイン後にコピー

例:

// 定义一个 add 函数
func add(a, b int) int {
    return a + b
}
ログイン後にコピー

違い

次の表は、メソッド間の違いをまとめたものです。と関数の主な違い:

#機能メソッド関数関連付けの種類YesNoYes#操作オブジェクト型インスタンス任意の型変数/値構文func (t 型) メソッド名(パラメータ) returnType
##受信者
No
func 関数名(パラメータ) returnType# #実用的なケース
例 1: 文字列の長さを計算する

func main() {
    name := "Go语言"
    fmt.Println("字符串长度:", len(name))
}
ログイン後にコピー
ここで、

len

関数は独立した関数であり、引数として文字列を指定し、その長さを返します。

例 2: 文字列の翻訳

type Text struct {
    content string
}

func (t Text) toUpper() string {
    return strings.ToUpper(t.content)
}

func main() {
    text := Text{content: "Go编程语言"}
    fmt.Println("转译后的字符串:", text.toUpper())
}
ログイン後にコピー
この場合、

toUpper

Text## と同じメソッドです #タイプの関連付け。 Text

インスタンスをレシーバーとして受け取り、大文字に変換されたコピーを返します。

以上がGo言語のメソッドと関数の違いを深く理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!