Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
package main
import (
"bufio"
"encoding/csv"
"fmt"
"log"
"os"
"strings"
)
type quizItem struct {
question string
answer string
}
func main() {
csvFile, err := os.Open("problems.csv")
if err != nil {
log.Fatal(err)
}
defer csvFile.Close()
reader := csv.NewReader(csvFile)
records, err := reader.ReadAll()
if err != nil {
log.Fatal(err)
}
for i := range records {
// Create quizItem object.
quizItem := quizItem{
question: records[i][0],
answer: records[i][1],
}
// Print out the question.
fmt.Println("Question: ", quizItem.question)
// Create reader and allow user to input their answer.
inputReader := bufio.NewReader(os.Stdin)
fmt.Print("Enter your answer now: ")
// Expect answer to be given once they hit return.
text, err := inputReader.ReadString('\n')
if err != nil {
log.Fatal(err)
}
fmt.Println("Your answer is:", text)
// Trim the newline suffix from the input.
text = strings.TrimSuffix(text, "\n")
// Compare the answer given by the user to the correct answer
// Print a response accordingly.
if text == quizItem.answer {
fmt.Println("Correct!")
} else {
fmt.Println("WRONG! Answer is: ", quizItem.answer)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment