Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mensimulasikan Fungsi `getpasswd` dalam Go?

Bagaimana untuk Mensimulasikan Fungsi `getpasswd` dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-12-22 14:27:15817semak imbas

How to Simulate `getpasswd` Functionality in 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn