Home > Back-end >  How to iterate the process of printing multiple values?
How to iterate the process of printing multiple values?

Time:09-03

In this golang code, I am asking a person to enter his name. After entering the name, the data will be taken from the values1 variable, and as a result, they will be printed out with the given keys like this

Given result

Enter your name: samename

Here is the name: samename
Here is the email address: email one
Here is the job role: job one

I also want to print the data of the values2 variable that is commented. Similarly, if I have the n number of values, will I have to repeat the for i := range values1 again and again?

Required result

Enter your name: samename

Here is the name: samename
Here is the email address: email one
Here is the job role: job role one

Here is the name: samename
Here is the email address: email two
Here is the job role: job role two
...
...

Code

package main

import "fmt"

func main() {
    var name string
    keys := [3]string{"name", "email address", "job role"}
    values1 := [3]string{"samename", "email one", "job role one"}
    // values2 := [3]string{"samename", "email two", "job role two"}

    for {
        fmt.Printf("Enter your name: ")
        fmt.Scanln(&name)
        fmt.Println()

        if name == values1[0] {
            for i := range values1 {
                // j is index into keys
                j := i % len(keys)

                // Print blank line between groups.
                if j == 0 && i > 0 {
                    fmt.Println()
                }
                fmt.Printf("Here is the %s: %s\n", keys[j], values1[i])
            }
            break
        } else {
            fmt.Println("Name is not found. Try again!")
        }
    }
}

CodePudding user response:

if you need to print the keys, maybe you can use map. with map you can print both of key and value.

package main

import "fmt"

func main() {
    var name string
    value1 := map[string]string{"name": "samename", "email": "email one", "role": "job role one"}
    value2 := map[string]string{"name": "samename", "email": "email two", "role": "job role two"}
    values := []map[string]string{value1, value2}
    var found bool

    for {
        fmt.Printf("Enter your name: ")
        fmt.Scanln(&name)
        fmt.Println()

        for _, value := range values {
            if value["name"] == name {
                found = true
                for k, v := range value {
                    fmt.Printf("Here is the %s: %s\n", k, v)
                }
                fmt.Println()
            }
        }

        if found {
            break
        } else {
            fmt.Println("Name is not found. Try again!")
        }
    }
}
  • Related