Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mensimulasikan Fungsi `getpasswd` dalam Go?
Bagaimana untuk Melaksanakan Fungsi getpasswd dalam Go?
Dalam Go, tiada fungsi terbina dalam serupa dengan getpasswd yang membolehkan anda membaca kata laluan daripada stdin tanpa menggemakannya ke terminal. Walau bagaimanapun, terdapat teknik yang boleh anda gunakan untuk mencapai kefungsian yang serupa.
Penyelesaian Amalan Terbaik
Pendekatan yang disyorkan ialah menggunakan gabungan pakej Go:
import ( "bufio" "fmt" "golang.org/x/term" )
Langkah 1: Baca Nama pengguna
fmt.Print("Enter Username: ") username, _ := bufio.NewReader(os.Stdin).ReadString('\n')
Langkah 2: Baca Kata Laluan (Tanpa Gema)
fmt.Print("Enter Password: ") bytePassword, _ := term.ReadPassword(int(syscall.Stdin))
Fungsi istilah.ReadPassword() mengambil deskriptor fail bagi input standard (stdin) dan mengembalikan sekeping bait yang mewakili kata laluan yang ditaip oleh pengguna. Ia menyekat sebarang gema aksara pada terminal untuk memastikan kata laluan kekal sulit.
Langkah 3: Tukar Bait kepada Rentetan
password := string(bytePassword)
Langkah 4: Kembali Bukti kelayakan
return strings.TrimSpace(username), strings.TrimSpace(password)
Contoh Kod:
package main import ( "bufio" "fmt" "os" "strings" "syscall" "golang.org/x/term" ) func main() { username, password, _ := credentials() fmt.Printf("Username: %s, Password: %s\n", username, password) } func credentials() (string, string, error) { reader := bufio.NewReader(os.Stdin) fmt.Print("Enter Username: ") username, err := reader.ReadString('\n') if err != nil { return "", "", err } fmt.Print("Enter Password: ") bytePassword, err := term.ReadPassword(int(syscall.Stdin)) if err != nil { return "", "", err } password := string(bytePassword) return strings.TrimSpace(username), strings.TrimSpace(password), nil }
Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan Fungsi `getpasswd` dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!