検索
ホームページバックエンド開発GolangGolang は独自のメソッドを作成します

Golang は急速に成長しているプログラミング言語です。C 言語と同等の表現力と効率性を備え、さまざまなプログラミング ニーズを満たす多数の標準ライブラリとさまざまなツールも備えています。 Golang はオブジェクト指向プログラミングもサポートしており、そのメソッドは重要な機能です。この記事では、Golang でメソッドを自分で記述する方法を紹介します。

1.その方法とは何ですか?

Golang では、メソッドとは、構造体 (struct) またはインターフェイス (interface) で定義された特別なシグネチャを持つ関数です。メソッドには、値メソッドまたはポインター メソッドを指定できます。値メソッドは構造体のコピーを操作しますが、ポインター メソッドは構造体のポインターを操作します。つまり、構造体の状態はポインター メソッドで変更できることを意味します。

以下は使用例です:

package main

import "fmt"

type Rect struct {
    width, height float64
}

func (r Rect) area() float64 {
    return r.width * r.height
}

func main() {
    r := Rect{3, 4}
    fmt.Println("Area:", r.area())
}

上記のコードでは、Rect 型の構造体を作成します。次に、 area メソッドが定義され、レシーバーは Rect 型で、戻り値は float64 型の area です。 main 関数では、Rect インスタンスを作成し、area メソッドを呼び出して面積を計算し、出力します。

2. メソッドの定義

Golang では、メソッドを作成するには、最初に構造またはインターフェイスを定義する必要があります。次に、構造体またはインターフェイスにメソッドを定義します。以下は、使用法メソッドとポインター メソッドを定義する例です。

type Person struct {
    name string
    age  int
}

func (p Person) SayHello() {
    fmt.Println("Hello, my name is", p.name)
}

func (p *Person) SetAge(age int) {
    p.age = age
}

上の例では、名前と年齢の 2 つのフィールドを持つ Person 構造体を定義します。パラメーターを受け取らず、人の名前を出力するだけで値を返す SayHello メソッドを定義しました。また、SetAge メソッドも定義します。このメソッドは、整数をパラメータとして渡し、それを Person インスタンスの age プロパティとして設定します。

SayHello メソッドを呼び出すと、Person インスタンスが自動的にメソッドに渡されます。 SetAge メソッドでは、Person インスタンスの内部状態を変更するため、レシーバーとしてポインターを使用します。

3. メソッドの呼び出し

Golang では、メソッドの呼び出しにはドット (.) 演算子が必要です。次の例は、上の例で定義したメソッドを呼び出す方法を示しています。

p1 := Person{"Tom", 20}
p1.SayHello()  // Hello, my name is Tom

p2 := &Person{"Sam", 25}
p2.SetAge(30)
fmt.Println(p2.age) // 30

この例では、2 つの Person インスタンスを作成します。1 つは構造リテラルを使用し、もう 1 つは new 演算子を使用して新しいオブジェクトへのポインタを返します。割り当て Person インスタンスへのポインタ。

括弧を使用して p1.SayHello メソッドを呼び出します。この時点では、メソッドが自動的に p1 としてインスタンスを渡すため、インスタンスを渡す必要はありません。 p2.SetAge メソッドの場合、p2 ポインターを指すアドレスを渡す必要があります。そうしないと、インスタンスのプロパティにアクセスできません。

4. メソッドのオーバーロード

Golang では、メソッドをオーバーロードすることもできます。つまり、複数のメソッドを同じレシーバー タイプに定義します。以下はメソッドのオーバーロードの例です。

type Rect struct {
    width, height float64
}

func (r Rect) Area() float64 {
    return r.width * r.height
}

func (r Rect) Perimeter() float64 {
    return 2 * (r.width + r.height)
}

func main() {
    r := Rect{3, 4}
    fmt.Println("Area:", r.Area())
    fmt.Println("Perimeter:", r.Perimeter())
}

上の例では、Area と Perimeter という 2 つのメソッドを定義しました。どちらも Rect 型を操作しますが、それらのシグネチャは異なります。これら 2 つのメソッドを main 関数でそれぞれ呼び出して、長方形の面積と周囲長を計算できます。

5. 概要

このメソッドは Golang の非常に重要な機能であり、利便性を提供します。メソッドの書き方と呼び出し方は、Golang プログラマーが習得すべき基本的なスキルです。値メソッドとポインター メソッドを使用して構造体を操作したり、オーバーロード メソッドを使用して型操作を簡単に実行したりできます。もちろん、ポインターと値の転送の違いにも注意し、必要に応じてポインター メソッドを使用して構造体のプロパティを変更する必要があります。

この記事では、Golang でメソッドを記述する方法に関する基本的な知識とスキルを提供します。読者は、Golang でのメソッドの使用についてより深く理解し、習得する必要があります。

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

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Golang vs. Python:並行性とマルチスレッドGolang vs. Python:並行性とマルチスレッドApr 17, 2025 am 12:20 AM

Golangは高い並行性タスクにより適していますが、Pythonには柔軟性がより多くの利点があります。 1.Golangは、GoroutineとChannelを介して並行性を効率的に処理します。 2。Pythonは、GILの影響を受けるが、複数の並行性メソッドを提供するスレッドとAsyncioに依存しています。選択は、特定のニーズに基づいている必要があります。

GolangとC:パフォーマンスのトレードオフGolangとC:パフォーマンスのトレードオフApr 17, 2025 am 12:18 AM

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。

Golang vs. Python:アプリケーションとユースケースGolang vs. Python:アプリケーションとユースケースApr 17, 2025 am 12:17 AM

seetgolangforhighperformance andconcurrency、ithyforbackendservicesandnetworkプログラミング、selectthonforrapiddevelopment、datascience、andmachinelearningduetoistsversitydextentextensextensentensiveLibraries。

Golang vs. Python:重要な違​​いと類似点Golang vs. Python:重要な違​​いと類似点Apr 17, 2025 am 12:15 AM

GolangとPythonにはそれぞれ独自の利点があります。Golangは高性能と同時プログラミングに適していますが、PythonはデータサイエンスとWeb開発に適しています。 Golangは同時性モデルと効率的なパフォーマンスで知られていますが、Pythonは簡潔な構文とリッチライブラリエコシステムで知られています。

Golang vs. Python:使いやすさと学習曲線Golang vs. Python:使いやすさと学習曲線Apr 17, 2025 am 12:12 AM

GolangとPythonはどのような側面で使いやすく、より滑らかな学習曲線を持っていますか? Golangは、高い並行性と高性能のニーズにより適しており、学習曲線はC言語の背景を持つ開発者にとって比較的穏やかです。 Pythonは、データサイエンスと迅速なプロトタイピングにより適しており、初心者にとって学習曲線は非常にスムーズです。

パフォーマンスレース:ゴラン対cパフォーマンスレース:ゴラン対cApr 16, 2025 am 12:07 AM

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

Golang vs. C:コードの例とパフォーマンス分析Golang vs. C:コードの例とパフォーマンス分析Apr 15, 2025 am 12:03 AM

Golangは迅速な発展と同時プログラミングに適していますが、Cは極端なパフォーマンスと基礎となる制御を必要とするプロジェクトにより適しています。 1)Golangの並行性モデルは、GoroutineとChannelを介した同時性プログラミングを簡素化します。 2)Cのテンプレートプログラミングは、一般的なコードとパフォーマンスの最適化を提供します。 3)Golangのごみ収集は便利ですが、パフォーマンスに影響を与える可能性があります。 Cのメモリ管理は複雑ですが、コントロールは問題ありません。

Golangの影響:速度、効率、シンプルさGolangの影響:速度、効率、シンプルさApr 14, 2025 am 12:11 AM

speed、効率、およびシンプル性をspeedsped.1)speed:gocompilesquilesquicklyandrunseffictient、理想的なlargeprojects.2)効率:等系dribribraryreducesexexternaldedenciess、開発効果を高める3)シンプルさ:

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境