Nested Structure in Golang

In Go, you can create nested structures by including one struct as a field within another struct. This allows you to build more complex data structures that have a hierarchical or nested relationship. Here’s how you can define and use nested structures:

package main

import "fmt"

// Outer struct
type Address struct {
	City  string
	State string
}

// Inner struct
type Person struct {
	FirstName string
	LastName  string
	Contact   Address // Nested struct as a field
}

func main() {
	// Creating a nested structure
	person1 := Person{
		FirstName: "John",
		LastName:  "Doe",
		Contact: Address{
			City:  "New York",
			State: "NY",
		},
	}

	// Accessing fields of nested structures
	fmt.Println("First Name:", person1.FirstName)
	fmt.Println("Last Name:", person1.LastName)
	fmt.Println("City:", person1.Contact.City)
	fmt.Println("State:", person1.Contact.State)
}

Output :

First Name: John
Last Name: Doe
City: New York
State: NY

In this example, we define two structs: Address and Person. The Person struct contains an instance of the Address struct as one of its fields. This creates a nested relationship between the two structs.

When creating a nested structure, you provide the values for the inner struct’s fields as part of the outer struct’s initialization. To access fields of the nested structure, you use dot notation to chain the field names, such as person1.Contact.City to access the city field within the nested Address struct.

Nested structures are useful for modeling real-world relationships and hierarchies within your data. They allow you to represent complex data structures in a more organized and intuitive manner.

Here’s another example demonstrating the use of nested structures to model a company’s employee information:

package main

import "fmt"

// Inner struct
type Address struct {
	City     string
	Province string
}

// Outer struct
type Employee struct {
	FirstName string
	LastName  string
	Contact   Address
	Position  string
	Salary    float64
}

func main() {
	// Creating a nested structure
	employee := Employee{
		FirstName: "Alice",
		LastName:  "Johnson",
		Contact: Address{
			City:     "Seattle",
			Province: "Washington",
		},
		Position: "Software Engineer",
		Salary:   75000.0,
	}

	// Accessing fields of nested structures
	fmt.Println("Employee:", employee.FirstName, employee.LastName)
	fmt.Println("Position:", employee.Position)
	fmt.Println("City:", employee.Contact.City)
	fmt.Println("Province:", employee.Contact.Province)
	fmt.Println("Salary:", employee.Salary)
}

Output :

Employee: Alice Johnson
Position: Software Engineer
City: Seattle
Province: Washington
Salary: 75000

In this example, we define two structs: Address and Employee. The Employee struct includes an instance of the Address struct as one of its fields. This allows us to store both personal and contact information for each employee.

By using nested structures, you can create more detailed and organized representations of complex data relationships. This is particularly useful when dealing with data that has multiple layers of information, such as addresses within employee information or items within an order.