Bird
Raised Fist0
Blockchain / Solidityprogramming~10 mins

Structs in Blockchain / Solidity - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Structs
Define Struct with fields
↓
Create instance of Struct
↓
Access or modify fields
↓
Use struct instance in code
↓
End
Structs group related data together. You define a struct, create instances, access or change fields, then use them in your program.
Execution Sample
Blockchain / Solidity
struct Person {
  string name;
  uint age;
}

Person alice = Person("Alice", 30);
Defines a Person struct with name and age, then creates an instance named alice.
Execution Table
StepActionEvaluationResult
1Define struct Person with fields name and ageNo runtime actionStruct type Person created
2Create instance alice with name='Alice', age=30Person("Alice", 30)alice.name = 'Alice', alice.age = 30
3Access alice.namealice.name'Alice'
4Access alice.agealice.age30
5Modify alice.age to 31alice.age = 31alice.age = 31
6Use alice in function or logicUse alice fieldsData from alice used
7End of executionNo further stepsExecution stops
💡 Reached end of code execution
Variable Tracker
VariableStartAfter Step 2After Step 5Final
alice.nameundefinedAliceAliceAlice
alice.ageundefined303131
Key Moments - 3 Insights
Why do we need to define a struct before creating instances?
The struct defines the shape and types of data fields. Without it, the program doesn't know what data each instance should hold (see execution_table step 1).
Can we change the fields of a struct instance after creation?
Yes, struct fields can be modified after creation as shown in execution_table step 5 where alice.age changes from 30 to 31.
How do we access data inside a struct?
We use dot notation like alice.name or alice.age to get or set values, shown in steps 3 and 4 of the execution_table.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is alice.age after step 5?
Aundefined
B30
C31
DAlice
💡 Hint
Check variable_tracker row for alice.age after Step 5
At which step is the struct Person defined?
AStep 1
BStep 3
CStep 2
DStep 5
💡 Hint
Look at execution_table step descriptions
If we did not define the struct first, what would happen when creating alice?
AInstance created with default fields
BError because struct type is unknown
CFields automatically inferred
Dalice.age would be zero
💡 Hint
Refer to key_moments about struct definition necessity
Concept Snapshot
Structs group related data fields.
Define struct with field types.
Create instances with values.
Access or modify fields with dot notation.
Use instances in your code.
Structs help organize complex data.
Full Transcript
Structs are like blueprints for data. First, you define a struct with named fields and their types. Then you create an instance by giving values to those fields. You can access or change these fields using dot notation, like alice.name or alice.age. This helps keep related data together and easy to manage. The execution table shows defining the struct, creating an instance alice with name 'Alice' and age 30, accessing fields, modifying age to 31, and using the instance in code. Variables track how alice's fields change over time. Key moments clarify why defining the struct first is necessary, how to access fields, and that fields can be changed after creation. The quiz tests understanding of these steps and concepts.

Practice

(1/5)
1.

What is the main purpose of using structs in blockchain programming?

easy
A. To perform mathematical calculations faster
B. To group related data together under one name
C. To create loops for repeating tasks
D. To store only single values like integers

Solution

  1. Step 1: Understand what structs do

    Structs are used to group different pieces of related data into one unit.
  2. Step 2: Compare options

    Only To group related data together under one name correctly describes grouping related data. Other options describe unrelated tasks.
  3. Final Answer:

    To group related data together under one name -> Option B
  4. Quick Check:

    Structs = Group related data [OK]
Hint: Think of structs as folders holding related info [OK]
Common Mistakes:
  • Confusing structs with loops or calculations
  • Thinking structs store only single values
  • Assuming structs speed up math operations
2.

Which of the following is the correct syntax to define a struct named Person with fields name (string) and age (uint)?

?
easy
A. struct Person(string name, uint age);
B. struct Person = (string name, uint age);
C. Person struct { string name; uint age; }
D. struct Person { string name; uint age; }

Solution

  1. Step 1: Recall struct syntax in blockchain languages

    Structs are defined with the keyword struct, followed by the name and curly braces containing fields with types and names.
  2. Step 2: Check each option

    struct Person { string name; uint age; } matches the correct syntax. Options B, C, and D use incorrect punctuation or order.
  3. Final Answer:

    struct Person { string name; uint age; } -> Option D
  4. Quick Check:

    Correct struct syntax = struct Person { string name; uint age; } [OK]
Hint: Remember: struct Name { type field; } [OK]
Common Mistakes:
  • Using parentheses instead of braces
  • Assigning struct like a variable
  • Omitting semicolons after fields
3.

Given the struct and code below, what will be the output?

struct Car {
  string brand;
  uint year;
}

Car myCar = Car("Tesla", 2020);

print(myCar.brand);
medium
A. Tesla
B. 2020
C. Car
D. Error: Cannot print struct field

Solution

  1. Step 1: Understand struct initialization

    The struct Car is created with brand "Tesla" and year 2020.
  2. Step 2: Identify printed field

    The code prints myCar.brand, which is "Tesla".
  3. Final Answer:

    Tesla -> Option A
  4. Quick Check:

    Print myCar.brand = Tesla [OK]
Hint: Print the field name, not the whole struct [OK]
Common Mistakes:
  • Printing the whole struct instead of a field
  • Confusing brand with year
  • Expecting an error when printing a field
4.

What is wrong with the following struct usage?

struct Book {
  string title;
  uint pages;
}

Book myBook;
myBook.title = "Learn Blockchain";
myBook.pages = "300";
medium
A. Struct name should be lowercase
B. Missing semicolon after struct definition
C. Cannot assign string to pages which is uint
D. Cannot assign values after declaration

Solution

  1. Step 1: Check field types and assignments

    The field pages is of type uint, but assigned a string "300".
  2. Step 2: Identify type mismatch error

    Assigning a string to a number type causes a type error.
  3. Final Answer:

    Cannot assign string to pages which is uint -> Option C
  4. Quick Check:

    Type mismatch in assignment = Cannot assign string to pages which is uint [OK]
Hint: Match field types exactly when assigning values [OK]
Common Mistakes:
  • Assigning string to a number field
  • Ignoring type errors
  • Thinking struct names must be lowercase
5.

You want to store multiple Employee structs in a list and then find the average age. Which approach correctly uses structs and arrays?

struct Employee {
  string name;
  uint age;
}

Employee[] employees;
employees.push(Employee("Alice", 30));
employees.push(Employee("Bob", 40));

uint totalAge = 0;
for (uint i = 0; i < employees.length; i++) {
  totalAge += employees[i].age;
}
uint averageAge = totalAge / employees.length;
print(averageAge);
hard
A. This code correctly calculates and prints average age
B. Cannot push structs into arrays
C. Loop should use i <= employees.length
D. Cannot access struct fields inside arrays

Solution

  1. Step 1: Understand struct array usage

    The code creates an array of Employee structs and adds two employees.
  2. Step 2: Check loop and calculation

    The loop sums ages correctly using employees[i].age and divides by length to get average.
  3. Final Answer:

    This code correctly calculates and prints average age -> Option A
  4. Quick Check:

    Struct arrays and loops = correct [OK]
Hint: Use array indexing and dot to access struct fields [OK]
Common Mistakes:
  • Using <= instead of < in loop causing out-of-bounds
  • Thinking structs can't be stored in arrays
  • Trying to access struct fields without indexing
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard