Go 跳转功能

Go 跳转功能,go,Go,我试图运行此代码,但他跳过了函数登录 package main import "fmt" var name string var password string func getName() { fmt.Print("What's your name : \n") fmt.Scanf("%s", &name) } func showName() { fmt.Print("Your name is " + name + "\n") } func getPa

我试图运行此代码,但他跳过了函数登录

package main

import "fmt"

var name string
var password string

func getName() {
    fmt.Print("What's your name : \n")
    fmt.Scanf("%s", &name)
}

func showName() {
    fmt.Print("Your name is " + name + "\n")
}

func getPassword() {
    fmt.Print("What's your password : \n")
    fmt.Scanf("%s \n", &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 \n", &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 :\n")
        fmt.Scanf("%s", &nameCorrect)
    }
}

func register() {
    getName()
    showName()
    getPassword()
    login()
}

func main() {
    singOrLog()
}

登录功能不会被跳过,尽管它永远不会打印任何内容。该行:

nameCorrect = name
将nameCorrect设置为与名称相同,后跟:

for !(nameCorrect == name) {
仅当name和nameCorrect不同时才会执行。您可以通过添加以下行看到这一点:

fmt.Printf("Name: '%s', nameCorrect: '%s', !(nameCorrect == name): %t\n", name, nameCorrect, !(nameCorrect == name))
将打印:

Name: '', nameCorrect: '', !(nameCorrect == name): false
我想您不想使用
namecorright=name