没有在golang中打印变量系列



我了解到Golang使用go v1.18得到了一些奇怪的输出当我打印firstName, lastName, birthday, created时,结果仅为created我已经打印了声明变量,并再次打印整个内容,效果很好问题出在var reader = bufio.NewReader(os.Stdin)

package main
import (
"bufio"
"fmt"
"os"
"strings"
"time"
)
var reader = bufio.NewReader(os.Stdin)
func main() {
firstName := getUserData("Enter First Name: ")
lastName := getUserData("Enter Last Name: ")
birthdate := getUserData("Enter Date of Birth: ")
created := time.Now()
fmt.Println(firstName, lastName, birthdate, created) //only prints created
fmt.Println(firstName) // prints firstName
fmt.Println(lastName) // prints lastName
fmt.Println(birthdate) // prints birthdate
fmt.Println(created) // prints created
}
func getUserData(promptText string) string {
fmt.Print(promptText)
userInput, _ := reader.ReadString('n')
cleanedInput := strings.Replace(userInput, "n", "", -1)
return cleanedInput
}

您必须使用strings.TrimSpace而不是strings.Replace因为在您的代码中,您没有删除回车r

请参阅下面更正的代码。

package main
import (
"bufio"
"fmt"
"os"
"strings"
"time"
)
var reader = bufio.NewReader(os.Stdin)
func main() {
firstName := getUserData("Enter First Name: ")
lastName := getUserData("Enter Last Name: ")
birthdate := getUserData("Enter Date of Birth: ")
created := time.Now()
fmt.Println(firstName, lastName, birthdate, created) //will print all
fmt.Println(firstName)                               // prints firstName
fmt.Println(lastName)                                // prints lastName
fmt.Println(birthdate)                               // prints birthdate
fmt.Println(created)                                 // prints created
}
func getUserData(promptText string) string {
fmt.Print(promptText)
userInput, _ := reader.ReadString('n')
cleanedInput := strings.TrimSpace(userInput)
return cleanedInput
}

最新更新