跳过功能

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.