Golangで構造体に関数をアタッチする方法

王林
リリース: 2024-08-06 02:58:52
オリジナル
1032 人が閲覧しました

How to to attach a function to a struct in Golang

php、C#、Dart などの他の言語を使用している場合は、クラスのメソッドの作成に精通しているでしょう。通常、これらのメソッドはそのクラスに対して 1 つのアクションを実装します。このような OOP 言語では、クラス スコープ内に次のようなメソッドを作成します。

class ClassName{
....
 function functionName(){
  // perform action
}
}
ログイン後にコピー

Go では、最初に構造体を作成し、次にその構造体に対して特定のアクションを実行するレシーバーをアタッチできます。たとえば、以下に示すように、ユーザーのフルネームを返すメソッドを持たせたいモデルとして User があります。

type myUser struct{
 FirstName string
LastName string
PostalCode string
DateOfBirth time.Time
}
ログイン後にコピー

上記では、FirstName、LastName ... などのさまざまな属性を持つ User タイプを作成しました。「myUser」タイプに対して特別なアクションを実行するメソッドが必要です。この場合はフルネームフォームを返すだけです。指定された属性 FirstName,LastName.

文字列を返すレシーバー関数のフルネームを作成できます。

func (user *myUser) fullname() (string, string){
   return user.FirstName ,user.LastName
}

ログイン後にコピー

これはどのように使用できますか?これを main 関数で直接テストして、どのように動作するかを確認することもできます:

func main() {

    user := myUser{
        FirstName: "Felix",
        LastName:  "chi",
    }
    fmt.Println(user.fullname())

}
ログイン後にコピー

したがって、myUser 構造体のレシーバー メソッドが正常に作成されました。完全な頌歌は次のようになります:

package main

import (
    "fmt"
    "time"
)

type myUser struct {
    FirstName   string
    LastName    string
    PostalCode  string
    DateOfBirth time.Time
}

func (user *myUser) fullname() (string, string) {
    return user.FirstName, user.LastName
}

func main() {

    user := myUser{
        FirstName: "Felix",
        LastName:  "chi",
    }
    fmt.Println(user.fullname())

}
ログイン後にコピー

それで、次は何ですか? https://go.dev/play/ にコードを貼り付けて、実際にどのように機能するかを確認してください。次回の投稿をご覧ください...!!!!

以上がGolangで構造体に関数をアタッチする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート