Understanding Structs in Golang
In Golang, a struct is a composite data type that groups together variables (called fields) under a single name.
Structs are used to create custom data types that can represent real-world entities or complex data structures.
Each field in a struct has a name and a type, and the fields can be of any valid Go type, including other structs.
Define a Struct#
To define a struct in Golang, use the type keyword followed by the struct name and the list of fields enclosed in curly braces {}.
type User struct {
Name string
Age int
Address string
}
In this example:
Useris the name of the struct.Name,Age, andAddressare the fields of the struct, with their respective types (string, int, and string).
Create an Instance of a Struct#
To create an instance of a struct, use the var keyword followed by the struct name and the field values enclosed in curly braces {}.
var user1 User
user1 = User{
Name: "Alice",
Age: 30,
Address: "123 Main St",
}
Here, user1 is an instance of the User struct with the specified field values.
Accessing Struct Fields#
To access the fields of a struct, use the dot . operator followed by the field name.
fmt.Println(user1.Name) // Output: Alice
fmt.Println(user1.Age) // Output: 30
fmt.Println(user1.Address) // Output: 123 Main St
This will print the values of the fields Name, Age, and Address of the user1 struct instance.
Nested Structs#
Structs can contain other structs as fields. This is useful for modeling more complex data structures.
type Address struct {
City string
State string
}
type Person struct {
Name string
Age int
Address Address
}
p := Person{
Name: "Alice",
Age: 30,
Address: Address{
City: "New York",
State: "NY",
},
}
fmt.Println(p.Address.City) // Output: New York
In this example, the Person struct contains an Address struct as a field. The Address struct has two fields: City and State.
Anonymous Structs#
An anonymous struct is a struct without a name. It is defined and instantiated in a single line.
person := struct {
Name string
Age int
}{
Name: "Bob",
Age: 25,
}
In this example, we define an anonymous struct with fields Name and Age and create an instance of it with the specified field values.
Summary#
Structs are a fundamental concept in Golang that allows you to define custom data types by grouping together variables under a single name. They are used to represent real-world entities or complex data structures in a concise and readable way.