Structs help group related information together in one place. They make it easier to organize and work with data that belongs together.
When you want to represent a real-world object like a person with name, age, and address.
When you need to keep different pieces of data related to each other, like a book's title, author, and pages.
When you want to pass multiple related values together in a function.
When you want to create a custom data type that holds several fields.
When you want to improve code readability by grouping data logically.
Syntax
Go
type StructName struct {
Field1 FieldType1
Field2 FieldType2
// more fields
}
Each field has a name and a type.
Structs create a new data type you can use like any other type.
Examples
This defines a Person with a name and age.
Go
type Person struct {
Name string
Age int
}
This defines a Book with title, author, and number of pages.
Go
type Book struct {
Title string
Author string
Pages int
}
Sample Program
This program creates a Person struct, fills it with data, and prints the values.
Go
package main
import"fmt"// Define a struct to hold person information
type Person struct {
Name string
Age int
}
func main() {
// Create a new Person
p := Person{Name: "Alice", Age: 30}
// Print the person's details
fmt.Println("Name:", p.Name)
fmt.Println("Age:", p.Age)
}
OutputSuccess
Important Notes
Structs help keep related data together, making your code easier to understand.
You can create many instances of a struct with different values.
Structs are like blueprints for creating objects with multiple properties.
Summary
Structs group related data into one unit.
They help organize and manage complex information.
Using structs makes your code clearer and easier to maintain.
Practice
(1/5)
1. Why do Go programmers use structs in their code?
easy
A. To group related data together into one unit
B. To perform mathematical calculations faster
C. To create loops and control program flow
D. To handle errors automatically
Solution
Step 1: Understand the purpose of structs
Structs are used to combine multiple pieces of related data into a single unit, like grouping a person's name, age, and address together.
Step 2: Compare options with struct purpose
Only To group related data together into one unit describes grouping related data, which matches the purpose of structs. Other options describe unrelated tasks.
Final Answer:
To group related data together into one unit -> Option A
Quick Check:
Structs = Group related data [OK]
Hint: Structs bundle related info like a folder [OK]
Common Mistakes:
Thinking structs are for calculations
Confusing structs with loops
Assuming structs handle errors
2. Which of the following is the correct way to define a struct named Person with fields Name (string) and Age (int) in Go?
easy
A. struct Person { Name: string, Age: int }
B. type Person struct { Name string; Age int }
C. Person := struct(Name string, Age int)
D. class Person { Name string; Age int }
Solution
Step 1: Recall Go struct syntax
In Go, structs are defined using the keyword type followed by the struct name and the struct keyword with fields inside curly braces.
Step 2: Check each option
type Person struct { Name string; Age int } matches Go syntax exactly. Options A and C use incorrect syntax, and D uses 'class' which is not used in Go.
Final Answer:
type Person struct { Name string; Age int } -> Option B
Quick Check:
Go struct syntax = type Person struct { Name string; Age int } [OK]
Hint: Use 'type Name struct { fields }' to define structs [OK]
Common Mistakes:
Using 'class' instead of 'struct'
Incorrect field syntax with colons
Assigning struct with ':=' instead of type
3. What will be the output of this Go code?
package main
import "fmt"
type Book struct {
Title string
Pages int
}
func main() {
b := Book{Title: "Go Basics", Pages: 150}
fmt.Println(b.Title)
}
medium
A. {Go Basics 150}
B. 150
C. Go Basics
D. Compilation error
Solution
Step 1: Understand struct initialization and field access
The struct Book is created with Title "Go Basics" and Pages 150. Accessing b.Title prints the Title field.
Step 2: Identify printed value
The code prints only b.Title, so output is "Go Basics". Other options print Pages, whole struct, or error which do not match.
Final Answer:
Go Basics -> Option C
Quick Check:
Print struct field = Title value [OK]
Hint: Print struct.field to get that value [OK]
Common Mistakes:
Printing whole struct instead of field
Confusing field names
Expecting Pages to print
4. Identify the error in this Go code that uses a struct:
package main
import "fmt"
type Car struct {
Brand string
Year int
}
func main() {
c := Car{Brand: "Toyota", Year: "2020"}
fmt.Println(c)
}
medium
A. Year field has wrong data type
B. Missing semicolon after struct definition
C. Cannot print struct directly
D. Brand field name is invalid
Solution
Step 1: Check struct field types and values
The struct defines Year as int, but the code assigns a string "2020" to Year, causing a type mismatch.
Step 2: Verify other options
Go does not require semicolons after struct definitions, structs can be printed, and Brand is a valid field name.
Final Answer:
Year field has wrong data type -> Option A
Quick Check:
Field type mismatch = Year field has wrong data type [OK]
Hint: Match field types exactly when assigning values [OK]
Common Mistakes:
Assigning string to int field
Thinking semicolons are needed
Believing structs can't be printed
5. You want to store information about multiple students, each with a Name (string) and Grades (slice of int). Which approach best uses structs to organize this data?
hard
A. Store all names and grades in a single string separated by commas
B. Use two separate slices: one for names and one for grades, matching indexes
C. Create a map with student names as keys and grades as values
D. Create a struct Student with fields Name string and Grades []int, then make a slice of Student
Solution
Step 1: Understand data grouping needs
Each student has a name and multiple grades, so grouping these related data in one struct is clear and organized.
Step 2: Evaluate options for clarity and maintainability
Create a struct Student with fields Name string and Grades []int, then make a slice of Student uses a struct to group data and a slice to hold many students, which is clean and easy to manage. Other options separate data or mix types, making code harder to maintain.
Final Answer:
Create a struct Student with fields Name string and Grades []int, then make a slice of Student -> Option D
Quick Check:
Structs group related data + slice holds many [OK]
Hint: Use struct for one item, slice for many [OK]
Common Mistakes:
Using separate slices causing index errors
Storing data as plain strings
Using maps without struct grouping
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.