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!")
}
}
}