ホームページ > バックエンド開発 > Golang > golang は異なるフィールドを返します

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

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

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート