golang は異なるフィールドを返します

王林
リリース: 2023-05-13 11:58:37
オリジナル
407 人が閲覧しました

Golang は複数の戻り値をサポートするプログラミング言語です。つまり、関数から複数の値を返すことができます。ただし、すべての値ではなく、1 つまたはいくつかのフィールドのみを返す必要がある場合があります。では、Golang でさまざまなフィールドを返すにはどうすればよいでしょうか?

Golang では、構造体を使用して、返される必要があるフィールドを定義できます。構造体は、同じタイプまたは異なるタイプのフィールドのセットで構成されるカスタム データ タイプです。関数内の構造体に返す必要があるフィールドをカプセル化して、構造体インスタンスを返すことができます。

たとえば、データベースからユーザーの情報をクエリする関数 GetUserInfo があるとします。ユーザー情報には名前、年齢、性別、住所などの複数のフィールドが含まれますが、返す必要があるのは名前と年齢の 2 つのフィールドだけです。次のような構造体を定義できます:

type UserBasicInfo struct{ Name string Age int }
ログイン後にコピー

次に、GetUserInfo 関数で、この構造体を使用して戻り値の型を定義できます:

func GetUserInfo(userId int) UserBasicInfo { //从数据库中查询用户信息 userInfo := queryUserInfo(userId) //封装需要返回的字段 return UserBasicInfo{ Name: userInfo.Name, Age: userInfo.Age, } }
ログイン後にコピー

GetUserInfo 関数を呼び出すと、 UserBasicInfo この型のインスタンス。名前と年齢の 2 つのフィールドのみが含まれます。次のようにさまざまなフィールドを取得できます:

userInfo := GetUserInfo(123) name := userInfo.Name age := userInfo.Age
ログイン後にコピー

構造体を使用してさまざまなフィールドを返すことに加えて、匿名構造体と関数リテラルを使用してコードを簡素化することもできます。これにより、構造体の型の定義が回避され、代わりに関数内で匿名の構造体インスタンスが直接返されます。

たとえば、次のような関数を定義できます。

func GetUserName(id int) string{ userInfo := struct{ Id int Name string }{Id:id, Name:"unknown"} //从数据库中查询用户信息 result := queryUserInfo(id) if result.Name != ""{ userInfo.Name = result.Name } return userInfo.Name }
ログイン後にコピー

この関数では、id と name の 2 つのフィールドを含む匿名構造体を定義します。データベースにユーザー情報を照会し、それを匿名構造に追加します。最後に、名前フィールドを返す必要があります。

同時に、関数リテラルを使用して、さまざまなフィールドを含む構造体を返すことができます。関数リテラルは名前のない匿名関数であり、必要に応じて宣言して実行できます。例:

getUserInfo := func(id int) (name string, age int){ //从数据库中查询用户信息 userInfo := queryUserInfo(id) //封装需要返回的字段 name = userInfo.Name age = userInfo.Age return }
ログイン後にコピー

この例では、ユーザー情報をクエリするための関数リテラル getUserInfo を宣言します。この関数は、名前と年齢の 2 つのフィールドを返します。

name, age := getUserInfo(123)
ログイン後にコピー

Golang では、さまざまなフィールドを返す方法がたくさんあり、実際の状況やニーズに応じて最適な方法を選択できます。具体的には、構造体、匿名構造体、関数リテラル、またはその他のメソッドを使用して、必要なフィールドを返すことができます。これらの方法は、コードの再利用性と読みやすさ、さらにはコードの保守性と使いやすさを向上させるのに役立ちます。

以上がgolang は異なるフィールドを返しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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