42 lines
1.6 KiB
Markdown
42 lines
1.6 KiB
Markdown
---
|
|
title: Go Structs
|
|
---
|
|
## Go Structs
|
|
|
|
Go's struct helps in grouping similar data together. It helps in creating custom types apart from the primitive data types. When we create a struct, we can use it the same way as we can use a primitive data type. Just like we have classes in Java and other object oriented programming languages, we have structs in golang. Using structs we can model real world entities.
|
|
|
|
In the below code, a struct named person is defined with name, age, gender and profession fields. Keyword type introduces a new type.
|
|
|
|
```go
|
|
type Person struct {
|
|
name string
|
|
age int
|
|
gender string
|
|
profession string
|
|
}
|
|
```
|
|
|
|
### Initialization
|
|
|
|
`lobster := new(Person)`
|
|
This statement will allocate memory for all the fields of the struct and and return a pointer to that memory location. All the values are initialised to zero values or default values.
|
|
Sometimes, we want to initialize the struct with pre-defined values. We can do this by:
|
|
`john := Person{"John", 23, "Male", "Developer"}`
|
|
Keep note of the fact that the fields should be in the same order as we have defined above.
|
|
|
|
If you don't want to keep a track of the order, you can use the following syntax:
|
|
`mary := Person{name: "Mary", age: 26, profession: "Teacher", gender: "Female"}`
|
|
|
|
### Accessing Field values
|
|
|
|
We can use the `.` operator to access the fields in a struct.
|
|
`john := Person{"John", 23, "Male", "Developer"}`
|
|
`fmt.Println(john.name)`
|
|
This statement will print John.
|
|
|
|
To modify a field:
|
|
`john.age = 25`
|
|
|
|
#### More Information:
|
|
* [Refer here for a quick introduction](https://gobyexample.com/structs)
|
|
* [JSON encoding using Go structs](https://gobyexample.com/json) |