Bird
Raised Fist0
Goprogramming~10 mins

Basic input concepts in Go - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Basic input concepts
Start program
↓
Prompt user for input
↓
Wait for user to type
↓
User presses Enter
↓
Read input into variable
↓
Use input in program
↓
End program
The program starts, asks the user for input, waits for the user to type and press Enter, then reads and stores the input for use.
Execution Sample
Go
package main
import "fmt"
func main() {
  var name string
  fmt.Print("Enter your name: ")
  fmt.Scanln(&name)
  fmt.Println("Hello,", name)
}
This program asks the user to enter their name, reads it, and then greets them.
Execution Table
StepActionInput/ConditionVariable StateOutput
1Program starts-name = ""-
2Print prompt-name = ""Enter your name:
3Wait for user inputUser types 'Alice' and presses Entername = ""-
4Read input into variable-name = "Alice"-
5Print greeting-name = "Alice"Hello, Alice
6Program ends-name = "Alice"-
💡 Program ends after printing greeting.
Variable Tracker
VariableStartAfter Step 4Final
name"""Alice""Alice"
Key Moments - 2 Insights
Why do we use &name in fmt.Scanln(&name)?
We use &name to pass the memory address of the variable so fmt.Scanln can store the input directly into it, as shown in step 4 of the execution_table.
What happens if the user just presses Enter without typing anything?
The variable 'name' will remain an empty string "", because fmt.Scanln reads what the user typed before Enter, as seen in step 3 and 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of 'name' after step 4?
A""
B"Alice"
Cnil
D"Enter your name:"
💡 Hint
Check the 'Variable State' column at step 4 in the execution_table.
At which step does the program print the greeting message?
AStep 5
BStep 4
CStep 2
DStep 6
💡 Hint
Look at the 'Output' column in the execution_table for the greeting message.
If the user inputs 'Bob' instead of 'Alice', which part of the execution_table changes?
AStep 5 output
BStep 2 output
CStep 3 and Step 4 variable state
DStep 1 action
💡 Hint
User input affects the variable state during reading input, see steps 3 and 4.
Concept Snapshot
Basic input in Go:
- Use fmt.Print to show prompt
- Use fmt.Scanln(&var) to read input
- &var passes variable address
- Input stored in variable for use
- Program continues after input
Full Transcript
This Go program starts by declaring a string variable 'name'. It prints a prompt asking the user to enter their name. The program then waits for the user to type and press Enter. Using fmt.Scanln with &name, it reads the input and stores it in the variable 'name'. Finally, it prints a greeting message including the entered name and ends. The key is passing the variable's address to read input correctly.

Practice

(1/5)
1. What is the main purpose of using input functions in Go programs?
easy
A. To get information from the user during program execution
B. To print messages on the screen
C. To declare variables
D. To create new functions

Solution

  1. Step 1: Understand input function role

    Input functions allow the program to receive data from the user while it runs.
  2. Step 2: Differentiate input from output

    Printing messages is output, not input. Declaring variables or creating functions are unrelated.
  3. Final Answer:

    To get information from the user during program execution -> Option A
  4. Quick Check:

    Input = get user data [OK]
Hint: Input means getting data from user, not showing it [OK]
Common Mistakes:
  • Confusing input with output (printing)
  • Thinking input declares variables
  • Mixing input with function creation
2. Which of the following is the correct way to read a single word input from the user in Go?
easy
A. fmt.Println(variable)
B. fmt.Scanln(&variable)
C. bufio.NewReader(os.Stdin).ReadString()
D. var input string

Solution

  1. Step 1: Identify input reading functions

    fmt.Scanln reads a single word or token from user input into a variable.
  2. Step 2: Eliminate other options

    fmt.Println prints output, bufio.NewReader reads full lines, and declaring a variable alone doesn't read input.
  3. Final Answer:

    fmt.Scanln(&variable) -> Option B
  4. Quick Check:

    Single word input uses fmt.Scanln [OK]
Hint: Use fmt.Scanln for simple word input [OK]
Common Mistakes:
  • Using fmt.Println to read input
  • Confusing bufio.NewReader with Scanln for single words
  • Forgetting to pass variable address with &
3. What will be the output of this Go code snippet?
var name string
fmt.Print("Enter name: ")
fmt.Scanln(&name)
fmt.Println("Hello,", name)
If the user types: John and presses Enter.
medium
A. Hello,
B. Error: missing input
C. Enter name: John
D. Hello, John

Solution

  1. Step 1: Understand input reading

    fmt.Scanln reads the word 'John' into variable name.
  2. Step 2: Understand output printing

    fmt.Println prints "Hello," followed by the value of name, which is "John".
  3. Final Answer:

    Hello, John -> Option D
  4. Quick Check:

    Input 'John' prints 'Hello, John' [OK]
Hint: Scanln reads input; println shows it back [OK]
Common Mistakes:
  • Expecting input prompt to print again
  • Thinking Scanln reads empty string
  • Confusing output with input prompt
4. What is wrong with this Go code for reading a full line input?
var input string
reader := bufio.NewReader(os.Stdin)
input, _ = reader.ReadString('\n')
fmt.Println(input)
medium
A. It does not import the bufio and os packages
B. ReadString does not read until newline
C. input variable is declared twice causing error
D. fmt.Println cannot print strings

Solution

  1. Step 1: Check package imports

    bufio and os packages must be imported to use bufio.NewReader and os.Stdin.
  2. Step 2: Verify variable declaration

    input is declared once and assigned, which is correct. ReadString reads until newline correctly. fmt.Println can print strings.
  3. Final Answer:

    It does not import the bufio and os packages -> Option A
  4. Quick Check:

    Missing imports cause errors [OK]
Hint: Always import bufio and os for buffered input [OK]
Common Mistakes:
  • Forgetting to import required packages
  • Redeclaring variables with := after declaration
  • Assuming ReadString reads partial input
5. You want to read a user's full name including spaces in Go. Which approach correctly reads and cleans the input to remove the trailing newline?
hard
A. Use fmt.Println to read input
B. Use fmt.Scanln(&name) only
C. Use bufio.NewReader(os.Stdin).ReadString('\n') and strings.TrimSpace()
D. Use fmt.Scanf("%s", &name)

Solution

  1. Step 1: Identify method for full line input

    bufio.NewReader with ReadString('\n') reads the entire line including spaces.
  2. Step 2: Remove trailing newline

    strings.TrimSpace removes extra spaces and newline characters from input.
  3. Final Answer:

    Use bufio.NewReader(os.Stdin).ReadString('\n') and strings.TrimSpace() -> Option C
  4. Quick Check:

    Full line input + trim newline = Use bufio.NewReader(os.Stdin).ReadString('\n') and strings.TrimSpace() [OK]
Hint: Use bufio + TrimSpace for full line input [OK]
Common Mistakes:
  • Using Scanln which stops at space
  • Using Scanf with %s reads only one word
  • Trying to read input with Println
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