Перейти пропустить функцию - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь заставить этот код работать, но он пропускает функцию входа в систему

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()
}

1 Ответ

0 голосов
/ 23 сентября 2018

Функция входа не пропускается, хотя она никогда ничего не распечатывает.Строка:

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

Я думаю, вы не хотите иметь строку nameCorrect = name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...