Code with Go
Ask or search…
K
Links

Structs

This Go program demonstrates the usage of structs, creating instances of a struct, initializing struct fields, and working with pointers to structs.
Let's go through each part of the code with inline comments and additional explanations:
package main
import "fmt"
// Define a struct named 'person' with two fields: 'name' of type string and 'age' of type int
type person struct {
name string
age int
}
// Function newPerson creates and initializes a new person, setting the name and age, and returns a pointer to the person struct
func newPerson(name string) *person {
p := person{name: name}
p.age = 42
return &p
}
func main() {
// Create an instance of the person struct with field values "Bob" and 20, and print it
fmt.Println(person{"Bob", 20})
// Create an instance of the person struct with named field values, "Alice" and 30, and print it
fmt.Println(person{name: "Alice", age: 30})
// Create an instance of the person struct with a named field value, "Fred," and print it
fmt.Println(person{name: "Fred"})
// Create an instance of the person struct using the newPerson function, setting the name to "Ann" and age to 40, and print it
fmt.Println(newPerson("Ann"))
// Create an instance of the person struct using the newPerson function, setting the name to "Jon", and print it
fmt.Println(newPerson("Jon"))
// Create an instance of the person struct with field values "Sean" and 50
s := person{name: "Sean", age: 50}
// Access and print the 'name' field of the person struct
fmt.Println(s.name)
// Create a pointer to the person struct
sp := &s
// Access and print the 'age' field of the person struct using a pointer
fmt.Println(sp.age)
// Modify the 'age' field of the person struct using the pointer
sp.age = 51
// Print the modified 'age' field of the person struct
fmt.Println(sp.age)
// Create an instance of an anonymous struct representing a dog and print it
dog := struct {
name string
isGood bool
}{
"Rex",
true,
}
fmt.Println(dog)
}

Output

{Bob 20}
{Alice 30}
{Fred 0}
&{Ann 40}
&{Jon 42}
Sean
50
51
{Rex true}
Explanation:
  1. 1.
    A person struct is defined with two fields: name of type string and age of type int.
  2. 2.
    The newPerson function creates and initializes a new person, setting the name and age, and returns a pointer to the person struct.
  3. 3.
    In the main function:
    • Instances of the person struct are created with different field values and printed.
    • The newPerson function is used to create instances with default values and print them.
    • Field values of an instance are accessed and printed.
    • A pointer to a person struct is created and used to access and modify field values.
    • An anonymous struct representing a dog is created and printed.