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 サイトの他の関連記事を参照してください。