英文:
Go fmt.Scanln that doesn't echo back characters typed by user. For password
问题
如何在命令行中捕获用户输入,而不回显用户输入的字符。我想用这个方法来捕获密码,就像Python中的getpass.getpass
函数一样。
package main
import (
"fmt"
"golang.org/x/term"
)
func main() {
fmt.Print("Enter password: ")
password, _ := term.ReadPassword(0)
fmt.Println("\nPassword entered:", string(password))
}
在上面的示例中,我们使用golang.org/x/term
包中的ReadPassword
函数来捕获密码输入。该函数会在用户输入密码时隐藏字符,并返回输入的密码。
英文:
How do I capture user input from the command line without echoing back the characters that the user types. I want to use this to capture a password. Like getpass.getpass in Python.
package main
import (
"fmt"
)
func main() {
var password string
fmt.Scanln(&password)
}
答案1
得分: 3
标准库中没有这个功能的辅助函数。
你需要创建自己的函数,或者使用现有的函数库,比如 gopass(支持Windows、Unix、BSD)。
使用gopass:(示例来自他们的网站)
import "fmt"
import "github.com/howeyc/gopass"
func main() {
fmt.Printf("Password: ")
pass := gopass.GetPasswd() // 静默模式,使用 gopass.GetPasswdMasked() 来显示 *
// 处理密码
}
英文:
There is no helper function in the standard library for this.
You have to create your own, or use an existing one like gopass (supports windows, unix, bsd).
Using gopass: (example taken from their website)
import "fmt"
import "github.com/howeyc/gopass"
func main() {
fmt.Printf("Password: ")
pass := gopass.GetPasswd() // Silent, for *'s use gopass.GetPasswdMasked()
// Do something with pass
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论