Flash cards
Review the key moves
What is the main idea behind Go Struct?
Lesson checks
Practice each idea before moving on
Short Mimo-style checks built from this lesson's code, terms, and sequence.
Which statement best captures the main point of this lesson?
Complete the missing token from the example code.
___ ; ...Put the learning moves in the order that makes the concept easiest to apply.
Go Structures
A struct (short for structure) is used to create a collection of members of different data types, into a single variable.
While arrays are used to store multiple values of the same data type into a single variable, structs are used to store multiple values of different data types into a single variable.
A struct can be useful for grouping data together to create records.
Declare a Struct
To declare a structure in Go, use the type and struct keywords:
Syntax
type
struct_name
struct {
member1
datatype ;
member2
datatype ;
member3
datatype ; ...
}Example
Here we declare a struct type Person with the following members: name , age , job and salary :
type Person struct {
name string
age int
job string
salary int
}Tip
Notice that the struct members above have different data types. name and job is of type string, while age and salary is of type int.
Access Struct Members
To access any member of a structure, use the dot operator (.) between the structure variable name and the structure member:
Example
package main
import ("fmt")
type Person struct {
name string
age int
job string
salary int
}
func main() {
var pers1 Person
var pers2 Person
// Pers1 specification pers1.name = "Hege" pers1.age = 45 pers1.job = "Teacher" pers1.salary = 6000 // Pers2 specification pers2.name = "Cecilie" pers2.age = 24 pers2.job = "Marketing" pers2.salary = 4500 // Access and print Pers1 info fmt.Println("Name: ", pers1.name) fmt.Println("Age: ", pers1.age) fmt.Println("Job: ", pers1.job) fmt.Println("Salary: ", pers1.salary) // Access and print Pers2 info fmt.Println("Name: ", pers2.name) fmt.Println("Age: ", pers2.age) fmt.Println("Job: ", pers2.job) fmt.Println("Salary: ", pers2.salary)
}Pass Struct as Function Arguments
You can also pass a structure as a function argument, like this:
Example
package main
import ("fmt")
type Person struct {
name string
age int
job string
salary int
}
func main() {
var pers1 Person
var pers2 Person
// Pers1 specification pers1.name = "Hege" pers1.age = 45 pers1.job = "Teacher" pers1.salary = 6000 // Pers2 specification pers2.name = "Cecilie" pers2.age = 24 pers2.job = "Marketing" pers2.salary = 4500 // Print Pers1 info by calling a function printPerson(pers1) // Print Pers2 info by calling a function printPerson(pers2)
}
func printPerson(pers Person) {
fmt.Println("Name: ", pers.name)
fmt.Println("Age: ", pers.age)
fmt.Println("Job: ", pers.job)
fmt.Println("Salary: ", pers.salary)
}