I am trying to make this code run, but he skips function login
package main
import "fmt"
var name string
var password string
func getName() {
fmt.Print("What's your name :
")
fmt.Scanf("%s", &name)
}
func showName() {
fmt.Print("Your name is " + name + "
")
}
func getPassword() {
fmt.Print("What's your password :
")
fmt.Scanf("%s
", &password)
}
func singOrLog() {
var input string
input = ""
var loop bool
loop = false
for loop == false {
fmt.Print("Do you want to make an account or login (0 for register and 1 login) : ")
fmt.Scanf("%s
", &input)
if input == "0" {
register()
loop = true
} else if input == "1" {
login()
loop = true
}
}
}
func login() {
var nameCorrect string
nameCorrect = name
for !(nameCorrect == name) {
fmt.Print("What's your name :
")
fmt.Scanf("%s", &nameCorrect)
}
}
func register() {
getName()
showName()
getPassword()
login()
}
func main() {
singOrLog()
}
The login function is not being skipped, though it will never print anything out. The line:
nameCorrect = name
sets the nameCorrect to be the same as name followed by:
for !(nameCorrect == name) {
which will only execute if name and nameCorrect are different. You can see this by adding the line:
fmt.Printf("Name: '%s', nameCorrect: '%s', !(nameCorrect == name): %t
", name, nameCorrect, !(nameCorrect == name))
which will print:
Name: '', nameCorrect: '', !(nameCorrect == name): false
I think you do not want to have the nameCorrect = name
line.