ホームページ バックエンド開発 Golang Golangを使用してクラスを実装する方法

Golangを使用してクラスを実装する方法

Apr 05, 2023 am 09:08 AM

Golang は、多くの高度な機能を備えた非常に人気のあるプログラミング言語です。主な特徴の 1 つはオブジェクト指向プログラミングであり、構造体を使用してオブジェクト指向のクラスと同様の概念を実装できます。この記事ではGolangを使ってクラスを実装する方法を紹介します。

  1. 構造

Golang では、構造体は、関連するデータ フィールドのセットを格納するために使用されるカスタム データ型です。文字列、整数、浮動小数点など、さまざまなタイプのフィールドを含めることができます。

構造体を定義するための構文は次のとおりです。

type StructName struct {
    field1 type1
    field2 type2
    ...
}
ログイン後にコピー

このうち、StructName は構造体の名前、field1、## です。 #field2 などは構造体のフィールド名、type1type2 などは対応するフィールドのデータ型です。

たとえば、次の単純な構造

Person には、名前と年齢の 2 つのフィールドが含まれています。

type Person struct {
    Name string
    Age int
}
ログイン後にコピー
構造を定義した後、それを使用して次の関数を作成できます。インスタンス。

p := Person{
    Name: "张三",
    Age: 18,
}
ログイン後にコピー
    メソッド
Golang では、メソッドはポインタ レシーバまたは値レシーバの関数です。メソッドは通常の関数と同様の構文を持ちますが、構造体に関連付けることができるため、オブジェクト指向メソッドのクラスのメソッドと同様の概念を実装できます。メソッドは構造体のフィールドにアクセスできます。

メソッドを定義するための構文は次のとおりです。

func (receiver ReceiverType) MethodName(args...) return_type {
    // 方法实现
}
ログイン後にコピー
このうち、

receiver はメソッド レシーバー、ReceiverType はポインタまたは値の型、 MethodName はメソッド名、args はパラメータ、return_type は戻り値の型です。

次の例は、

Person 構造体にメソッド SayHello を定義して、挨拶できるようにする方法を示しています。

func (p Person) SayHello() {
    fmt.Printf("您好,我叫%s,今年%d岁。\n", p.Name, p.Age)
}
ログイン後にコピー
このメソッドは、

Person 型のレシーバーを受け入れ、Person インスタンスの名前と年齢を出力します。

    継承
継承は、オブジェクト指向プログラミングにおける重要な概念です。これにより、クラスが別のクラスのプロパティとメソッドを「継承」し、それに基づいて拡張することができます。

Golang では、継承は直接サポートされている機能ではありません。ただし、合成を使用すると、継承と同様の効果を実現できます。

具体的には、他の構造体へのポインターを含む構造体を定義し、そのメソッドを拡張することで継承を実装できます。

たとえば、

person 型のフィールドとクラスを表す別のフィールドを含む Student 構造体を定義できます。

type Student struct {
    person *Person
    class string
}
ログイン後にコピー
次に、

Student 構造体の Person 構造体のメソッドを拡張できます。メソッドの実装では、person フィールドを使用して、person 構造体のフィールドにアクセスできます。

func (s Student) Study() {
    fmt.Printf("%s在%s班级学习...\n", s.person.Name, s.class)
}

func (s Student) SayHello() {
    s.person.SayHello()
    fmt.Printf("我在%s班级上学。\n", s.class)
}
ログイン後にコピー
    完全な例
Golang を使用してクラスを実装する方法を示す完全な例を次に示します。

package main

import "fmt"

type Person struct {
    Name string
    Age int
}

func (p Person) SayHello() {
    fmt.Printf("您好,我叫%s,今年%d岁。\n", p.Name, p.Age)
}

type Student struct {
    person *Person
    class string
}

func (s Student) Study() {
    fmt.Printf("%s在%s班级学习...\n", s.person.Name, s.class)
}

func (s Student) SayHello() {
    s.person.SayHello()
    fmt.Printf("我在%s班级上学。\n", s.class)
}

func main() {
    p := Person{
        Name: "张三",
        Age: 18,
    }
    s := Student{
        person: &p,
        class: "高中一年级",
    }

    s.SayHello()
    s.Study()
}
ログイン後にコピー
上記のコードを実行すると、出力結果は次のようになります:

您好,我叫张三,今年18岁。
我在高中一年级班级上学。
ログイン後にコピー
    概要
Golang は、オブジェクト指向プログラミングと同様の機能を提供します。クラスの概念を実装するための構造体とメソッド。 Golang は継承を直接サポートしていませんが、合成を使用して継承と同様の効果を実現できます。これらの機能により、Golang でオブジェクト指向プログラミング スタイルのコードを書くことができます。

以上がGolangを使用してクラスを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Golang vs. Python:パフォーマンスとスケーラビリティ Golang vs. Python:パフォーマンスとスケーラビリティ Apr 19, 2025 am 12:18 AM

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

Golang and C:Concurrency vs. Raw Speed Golang and C:Concurrency vs. Raw Speed Apr 21, 2025 am 12:16 AM

Golangは並行性がCよりも優れていますが、Cは生の速度ではGolangよりも優れています。 1)Golangは、GoroutineとChannelを通じて効率的な並行性を達成します。これは、多数の同時タスクの処理に適しています。 2)Cコンパイラの最適化と標準ライブラリを介して、極端な最適化を必要とするアプリケーションに適したハードウェアに近い高性能を提供します。

ゴーを始めましょう:初心者のガイド ゴーを始めましょう:初心者のガイド Apr 26, 2025 am 12:21 AM

goisidealforforbeginnersandsutable forcloudnetworkservicesduetoitssimplicity、andconcurrencyfeatures.1)installgofromtheofficialwebsiteandverify with'goversion'.2)

Golang vs. C:パフォーマンスと速度の比較 Golang vs. C:パフォーマンスと速度の比較 Apr 21, 2025 am 12:13 AM

Golangは迅速な発展と同時シナリオに適しており、Cは極端なパフォーマンスと低レベルの制御が必要なシナリオに適しています。 1)Golangは、ごみ収集と並行機関のメカニズムを通じてパフォーマンスを向上させ、高配列Webサービス開発に適しています。 2)Cは、手動のメモリ管理とコンパイラの最適化を通じて究極のパフォーマンスを実現し、埋め込みシステム開発に適しています。

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

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

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

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

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

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

Golang vs. Python:長所と短所 Golang vs. Python:長所と短所 Apr 21, 2025 am 12:17 AM

GolangisidealforBuildingsCalables Systemsduetoitsefficiency andConcurrency、Whilepythonexcelsinquickscriptinganddataanalysisduetoitssimplicityand vastecosystem.golang'ssignencouragesclean、readisinediteNeditinesinedinediseNabletinedinedinedisedisedioncourase

See all articles