Go では、構造体型に埋め込みフィールドを含めることができ、構造体内に 1 つ以上の型を埋め込むことができます。この強力な機能により、コードの再利用と効率的なメモリ管理が可能になります。ただし、ポインターについて学習しているときに、これらのフィールドにアクセスする方法を理解するのは難しい場合があります。
次の構造体の定義を考えてみましょう。
type Engine struct {
power int
}
type Tires struct {
number int
}
type Cars struct {
*Engine // Embedded field with pointer
Tires // Embedded field without pointer
}
ご覧のとおり、Cars 構造体内では、埋め込み型ポインター *Engine が定義されています。これにより、Cars 構造体を介して Engine タイプのメソッドとフィールドにアクセスできるようになります。
Engine 埋め込みフィールドの power フィールドにアクセスするには、まず Engine 構造体と Cars 構造体の両方を初期化する必要があります。メイン関数内:
func main() {
car := new(Cars) // Initialize Cars struct
car.Engine = new(Engine) // Initialize Engine struct explicitly
car.power = 342 // Set power field
car.number = 4 // Set number field
}
両方の構造体を明示的に初期化することにより、埋め込まれた *Engine ポインターと実際の Engine オブジェクト間の接続を確立します。これで、Cars struct:
fmt.Println(car.power) // Prints 342
を通じて power フィールドにアクセスできるようになります。同様に、非ポインター埋め込みフィールドの Tire についても同様です。
fmt.Println(car.number) // Prints 4
この例では、構造体内の埋め込みフィールドを適切に初期化してアクセスする方法を示します。により、コードの再利用と効率的なメモリ管理を最大限に活用できるようになります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3