Bird
Raised Fist0
Goprogramming~5 mins

Basic input concepts in Go

Choose your learning style10 modes available
Introduction
We use input to let the user give information to the program. This helps the program do different things based on what the user wants.
When you want to ask the user for their name.
When you need the user to enter a number to calculate something.
When you want to get a choice from the user to decide what to do next.
When you want to read a line of text from the user.
When you want to get multiple pieces of information from the user.
Syntax
Go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	input, _ := reader.ReadString('\n')
	fmt.Println("You typed:", input)
}
Use bufio.NewReader(os.Stdin) to read input from the keyboard.
The ReadString('\n') method reads until the user presses Enter.
Examples
This example uses fmt.Scanln to read a single word input from the user.
Go
package main

import (
	"fmt"
)

func main() {
	var name string
	fmt.Print("Enter your name: ")
	fmt.Scanln(&name)
	fmt.Println("Hello,", name)
}
This example reads a whole line of text including spaces using bufio.NewReader.
Go
package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	fmt.Print("Enter a sentence: ")
	text, _ := reader.ReadString('\n')
	fmt.Println("You wrote:", text)
}
Sample Program
This program asks the user for their favorite color, reads the input line, removes the newline, and then prints a friendly message.
Go
package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	fmt.Print("What is your favorite color? ")
	color, _ := reader.ReadString('\n')
	color = strings.TrimSpace(color) // remove newline
	fmt.Printf("Wow! %s is a nice color.\n", color)
}
OutputSuccess
Important Notes
Always handle the newline character when reading input lines to avoid extra spaces.
Use fmt.Scanln for simple inputs without spaces, and bufio.NewReader for full lines.
Input reading can return errors; in simple cases you can ignore them with _ but in real programs handle errors properly.
Summary
Input lets the program get information from the user.
Use fmt.Scanln for simple word inputs and bufio.NewReader for full lines.
Always clean input by removing extra spaces or newlines.

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