ホームページ バックエンド開発 Golang Go で構造体を使用するにはどうすればよいですか?

Go で構造体を使用するにはどうすればよいですか?

May 11, 2023 pm 04:34 PM
使用 言語を移動 構造

プログラムを設計するとき、構造体を使用するのは非常に一般的な方法です。 Go 言語では、構造はコードをより適切に整理および管理するのに役立つ非常に強力な概念です。この記事ではGoにおける構造体の使い方を詳しく解説していきます。

構造体とは何ですか?

構造はカスタム データ型であり、複数のデータ フィールドで構成されます。各フィールドには、数値、文字列、ブール値などの基本的なデータ型、または他の構造の組み合わせを使用できます。構造体のフィールドには、オブジェクトのプロパティと同様に、ドット表記を使用してアクセスできます。

Go では、型を使用して構造を定義できます。

type Person struct {

name     string
age      int
language []string
ログイン後にコピー

}

この例では、名前、年齢、言語の 3 つのフィールドを持つ Person という名前の構造体を定義します。 name は文字列型、age は int 型、そして language は文字列スライスです。次のコマンドを使用して、新しい Person 構造を作成できます。

person := person{名前: "Tom"、年齢: 25、言語: []string{"中国語"、"英語"}}

ドットは次のフィールドで使用できます。構造体 アクセス方法:

fmt.Println(person.name)

Go 構造体の匿名フィールド

Go では、匿名フィールドを使用して構造体をより詳細にすることもできます。コンパクト。匿名フィールドは構造体フィールドであり、名前がありません。 2 つ以上のフィールドが同じ型である場合、それらは匿名フィールドとして定義できます。

以下は匿名フィールドをサポートする例です:

type person struct {

name string
address
ログイン後にコピー

}

type address struct {

street string
city   string
state  string
ログイン後にコピー

}

上記のコードでは、Person 構造体に address という名前の匿名フィールドが含まれています。この構造体は、番地、都市、州の 3 つのフィールドを持つ住所タイプも定義します。このようにネストされたフィールドにアクセスできます。

人 := 人{名前: "トム"、住所: 住所{通り: "メインストリート"、都市: "ニューヨーク"、州: "ニューヨーク"}}

fmt .Println(person.address.city)

Go 構造におけるネストされた構造

構造は相互にネストすることができるため、より複雑なデータ構造を作成できます。構造は別の構造内に埋め込むことができます。

type Person struct {

name    string
contact Contact
ログイン後にコピー

}

type Contact struct {

email   string
phone   string
address string
ログイン後にコピー

}

上記のコードでは、Person 構造体はボディ内に Contact 構造がネストされています。新しい Person 構造は次の方法で作成できます。

person := person{名前: "Tom"、連絡先: Contact{電子メール: "tom@gmail.com"、電話番号: "888-888-8888"、住所: "Main St."}}

fmt.Println(person.contact.phone)

Go 構造体のメソッド

Go では、構造体でメソッドを定義でき、これらのメソッドは構造体インスタンスを介して渡すことができます。電話すること。メソッドは、構造体を通じてのみ呼び出すことができる特別な関数です。

次のコードを使用してメソッドを追加できます。

type Person struct {

name string
age  int
ログイン後にコピー

}

func (p Person)sayHello() {

fmt.Printf("Hello, my name is %s, I'm %d years old.
ログイン後にコピー

", p.name, page)
}

上記のコードでは、sayHello() は Person という名前の構造体のメソッドです。

次のコードを使用して、このメソッドを呼び出すことができます。

# person := Person{name: "Tom", age: 25}

person.sayHello()

上記の例では、Person オブジェクトを作成し、sayHello() メソッドを呼び出しました。

結論

Go 構造は、オブジェクト指向プログラミングにおいて非常に重要な概念であり、コードを整理および管理するための優れた方法を提供します。 Go で構造体の使用方法を詳しく紹介しました。構造体の定義、匿名フィールドとネストされた構造体の使用、メソッドの定義と呼び出しについて学びました。この記事が役に立ち、Go 言語をより良く習得するのに役立つことを願っていますプログラミング。###

以上がGo で構造体を使用するにはどうすればよいですか?の詳細内容です。詳細については、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

GOに効率的なキー値ペアストレージを実装する最良の方法は何ですか? GOに効率的なキー値ペアストレージを実装する最良の方法は何ですか? Apr 02, 2025 pm 01:54 PM

GO言語で効率的なキー価値ペアストレージを実装する正しい方法GO言語でRedisと同様のキー値ペアメモリを開発するときに最高のパフォーマンスを実現する方法...

Goでは、Printlnとstring()関数を備えた文字列を印刷すると、なぜ異なる効果があるのですか? Goでは、Printlnとstring()関数を備えた文字列を印刷すると、なぜ異なる効果があるのですか? Apr 02, 2025 pm 02:03 PM

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

GOの浮動小数点番号操作に使用されるライブラリは何ですか? GOの浮動小数点番号操作に使用されるライブラリは何ですか? Apr 02, 2025 pm 02:06 PM

GO言語の浮動小数点数操作に使用されるライブラリは、精度を確保する方法を紹介します...

Go's Crawler Collyのキュースレッドの問題は何ですか? Go's Crawler Collyのキュースレッドの問題は何ですか? Apr 02, 2025 pm 02:09 PM

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

GOフレームワークの現在のオーディエンスステータスは何ですか? GRPCまたはGozeroを選択するためのさまざまなビジネスのニーズにより適していますか? GOフレームワークの現在のオーディエンスステータスは何ですか? GRPCまたはGozeroを選択するためのさまざまなビジネスのニーズにより適していますか? Apr 02, 2025 pm 03:57 PM

現在のGOプログラミングエコシステムにおけるGOフレームワークのオーディエンスステータスの分析では、開発者はビジネスニーズを満たすために適切なフレームワークを選択することに直面しています。今日私たち...

GO言語でのinit()関数の実行順序は何ですか? GO言語でのinit()関数の実行順序は何ですか? Apr 02, 2025 am 10:09 AM

go言語でのinit()関数の実行順序は、goプログラミングで、init()関数は特別な関数であり、パッケージの初期化時に必要な関数を実行するために使用されます...

GolangのLinux Iptablesリンクリストに操作を実装する方法は? GolangのLinux Iptablesリンクリストに操作を実装する方法は? Apr 02, 2025 am 10:18 AM

Golangを使用してLinuxを実装しています...

Go Language Slice Index:シングル要素のスライス傍受が境界を越えないのはなぜですか? Go Language Slice Index:シングル要素のスライス傍受が境界を越えないのはなぜですか? Apr 02, 2025 pm 02:36 PM

GOスライシングインデックスの国境を越えた問題の調査:GOの単一エレメントスライス傍受、スライスは、配列などに使用できる柔軟なデータ構造です...

See all articles