名前付き型を扱うときは、新しい型の作成と埋め込みの違いを理解することが重要です。既存のタイプ。元のメソッドを保持しながら、既存の型にメソッドを追加する方法を見てみましょう。
ケース 1: 名前付き型
type キーワードを使用して新しい型を定義する場合、基になる型とは異なります。たとえば、次のコード スニペットでは、
type StartTime time.Time
StartTime は新しい型であり、Date() などの time.Time のメソッドはありません。これは、名前付き型は基になる型からメソッドを継承しないためです。
ケース 2: 埋め込み
元のメソッドを失わずに既存の型にメソッドを追加するには、次を使用します。埋め込み。これには、既存の型を埋め込む新しい構造体の作成が含まれます。たとえば、埋め込みを使用して上記のコードを書き直すことができます:
type StartTime struct { time.Time }
この場合、StartTime は time.Time を埋め込みます。つまり、すべてのメソッドとフィールドが含まれます。
方法埋め込みが機能する
構造体が別の構造体を匿名で (フィールドを指定せずに) 埋め込む場合name)、埋め込まれた構造体のフィールドとメソッドは、埋め込み構造体に昇格されます。これは、埋め込み構造体のインスタンスで直接使用できることを意味します。
使用例
埋め込みを使用すると、StartTime と の両方のメソッドにアクセスできます。 time.Time:
func main() { s := StartTime{time.Now()} fmt.Println(s.Date()) // Will output the current date }
結論
動作を変更する必要がある場合、または既存の型にメソッドを追加する必要がある場合は、埋め込みの使用を検討してください。これにより、型の機能を拡張しながら、元のメソッドを保持できます。
以上が名前付き型と埋め込み: 既存の Go 型にメソッドを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。