golang のメソッドと関数

WBOY
リリース: 2023-05-14 14:01:08
オリジナル
516 人が閲覧しました

Golang は、メソッドや関数の概念を含め、多くの精緻な設計を備えた最新のプログラミング言語です。メソッドと関数は、Golang プログラマが知っておく必要がある基本的な概念です。この記事では、それらの類似点と相違点について詳しく説明します。

1. 関数

関数は Golang プログラムの基本コンポーネントの 1 つであり、関数名、パラメータ リスト、戻り値の型、関数本体で構成されます。構文は次のとおりです:

func 函数名(参数列表)(返回值类型){
     函数体
}
ログイン後にコピー

次は簡単な例です:

func sum(a int, b int) int {
     return a + b
}
ログイン後にコピー

この関数は sum と呼ばれ、int 型の 2 つのパラメータ a と b を必要とし、戻り値の型は int です。関数本体には、a と b の合計を返す return ステートメントが含まれています。

関数は次のように呼び出されます:

c := sum(1, 2) //c的值为3
ログイン後にコピー

2. メソッド

メソッドは、特定の型に関連付けられた関数です。 Golang のアプローチは、型固有の関数定義を独自の型に配置して、これらの関数がその型のすべてのインスタンスで呼び出されるようにすることです。

メソッドは関数と同様に定義されますが、追加の受信側パラメーターがあります。これは、呼び出す値のタイプをメソッドに指示します。メソッドの一般的な構文は次のとおりです。

func (接收器变量 接收器类型) 方法名(参数列表)(返回值类型){
     函数体
}
ログイン後にコピー

以下は簡単な例です。

type Person struct {
     Name string
     Age  int
}

func (p Person) SayHello() string {
     return "Hello, my name is " + p.Name
}

func main() {
     p := Person{Name: "Tom", Age: 18}
     fmt.Println(p.SayHello()) //输出结果为 "Hello, my name is Tom"
}
ログイン後にコピー

この例では、タイプ Person の構造体を定義し、SayHello メソッドを定義します。このメソッドは、受信者のタイプを Person タイプに設定し、このメソッドがすべてのインスタンスで呼び出されることを示します。

p という名前の Person インスタンスを作成し、その SayHello メソッドを呼び出します。インスタンスの名前を表す文字列を返します。

3. 関数とメソッドの違い

  1. 関数はどこでも呼び出すことができるコードの一部ですが、メソッドは特定の型に関連付けられたコードです。
  2. メソッドは、それが属するオブジェクトを通じて呼び出す必要がありますが、関数は直接呼び出すことができます。
  3. メソッドはオブジェクトのプライベート データにアクセスできますが、関数はアクセスできません。
  4. メソッドにはレシーバーパラメータがありますが、関数にはありません。
  5. メソッドはオーバーライドできますが、関数はオーバーライドできません。

4. 概要

Golang のメソッドと関数は、Golang プログラムを構築するための基本コンポーネントです。関数は、誰でも、どこからでも呼び出すことができる、独立した再利用可能なコード ブロックです。一方、メソッドは特定の型に関連付けられたコードのブロックであり、その型のオブジェクトを通じてのみ呼び出すことができます。

メソッドと関数を学ぶことで、より良いプログラミングと開発が可能になります。 Golang についてさらに詳しく知りたい場合は、関連する Golang ドキュメントとチュートリアルを読んでください。

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

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