不在 golang 中打印一系列变量
Not printing series of variable in 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
因为在你的代码中你没有删除 Carriage return \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
}
我正在学习 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
因为在你的代码中你没有删除 Carriage return \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
}