GOでは、メソッドは特別な受信者引数を持つ関数です。受信機は、 func
キーワードとメソッド名の間の独自の引数リストに表示されます。メソッドはタイプに関連付けられており、そのタイプの値の操作を実行するために使用できます。この概念は、メソッドが本質的にクラスまたはオブジェクトに属する関数であるオブジェクト指向プログラミングに似ています。ただし、GOにはクラスがないため、メソッドはタイプに直接添付されています。
方法を使用すると、タイプのインスタンスで実行できる動作を定義できます。たとえば、構造体のフィールドを更新したり、構造体のフィールドに基づいて計算を実行する方法を定義する場合があります。これにより、関連する機能が動作するデータと一緒にグループ化されているため、コードがより読みやすく整理されます。
GOでメソッドを定義するには、次の構文を使用します。
<code class="go">func (receiver ReceiverType) MethodName(parameters) returnType { // Method body }</code>
これがコンポーネントの内訳です:
func
は、関数またはメソッド宣言を開始するためのキーワードです。(receiver ReceiverType)
レシーバーを指定します。 ReceiverType
構造体またはその他のタイプであり、 receiver
メソッド内のレシーバーパラメーターに与える名前です。MethodName
はメソッドの名前です。parameters
は、関数と同様に、メソッドがとるパラメーターです。returnType
、メソッドによって返される値のタイプです。たとえば、 Person
構造体があり、その人の年齢を設定する方法を定義したい場合は、次のようにすることができます。
<code class="go">type Person struct { Name string Age int } func (p *Person) SetAge(newAge int) { p.Age = newAge }</code>
この例では、 SetAge
Person
タイプの方法であり、 Person
インスタンスのAge
分野を変更します。
メソッドとGOの関数の主な違いは、メソッドには受信者引数があるが、関数にはそうではないということです。このレシーバー引数により、メソッドを特定のタイプに関連付けることができます。これにより、メソッドはそのタイプのインスタンスで呼び出されます。
主な違いは次のとおりです。
person.SetAge(30)
)を使用して、関連付けられているタイプのインスタンスで呼び出されます。関数は直接呼び出されます(例えば、 SetAge(person, 30)
)。instance.Method()
)を呼び出すための構文は、関数( Function(instance)
)を呼び出すこととは異なります。GOでは、メソッドはほぼすべてのタイプに関連付けられますが、いくつかの制限があります。
基本タイプ: int
、 float64
、 string
などなどの基本タイプのメソッドを定義できますが、これらの基本タイプに基づいて新しいタイプを最初に定義する必要があります。例えば:
<code class="go">type MyInt int func (m MyInt) Double() int { return int(m * 2) }</code>
構造体:メソッドは、最も一般的なユースケースである構造体に直接関連付けることができます。
<code class="go">type Rectangle struct { width, height float64 } func (r Rectangle) Area() float64 { return r.width * r.height }</code>
配列とスライス:メソッドを配列やスライスに直接関連付けることはできませんが、配列またはスライスをラップして、メソッドをそのタイプに関連付けるタイプを作成できます。
<code class="go">type IntSlice []int func (s IntSlice) Sum() int { sum := 0 for _, v := range s { sum = v } return sum }</code>
ポインター:ポインタータイプのメソッドを定義できます。これは、受信者の状態を変更するのに役立つことがよくあります。
<code class="go">type Counter int func (c *Counter) Increment() { *c }</code>
要約すると、GOの幅広いタイプにメソッドを関連付けることができますが、通常、基本的なタイプまたは配列/スライスを使用してメソッドを使用する場合は、新しいタイプを定義する必要があります。
以上がGOの方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。