Go에서 getpasswd 기능을 구현하는 방법은 무엇입니까?
Go에는 읽기를 허용하는 getpasswd와 유사한 내장 함수가 없습니다. 터미널에 표시하지 않고 stdin에서 비밀번호를 가져옵니다. 그러나 유사한 기능을 구현하는 데 사용할 수 있는 기술이 있습니다.
모범 사례 솔루션
권장되는 접근 방식은 Go 패키지의 조합을 사용하는 것입니다.
import ( "bufio" "fmt" "golang.org/x/term" )
1단계: 읽기 사용자 이름
fmt.Print("Enter Username: ") username, _ := bufio.NewReader(os.Stdin).ReadString('\n')
2단계: 비밀번호 읽기(에코 없이)
fmt.Print("Enter Password: ") bytePassword, _ := term.ReadPassword(int(syscall.Stdin))
term.ReadPassword() 함수는 사용자 이름의 파일 설명자를 가져옵니다. 표준 입력(stdin)을 입력하고 사용자가 입력한 비밀번호를 나타내는 바이트 조각을 반환합니다. 비밀번호의 기밀성을 보장하기 위해 터미널에서 모든 문자 에코를 억제합니다.
3단계: 바이트를 문자열로 변환
password := string(bytePassword)
4단계: 반환 자격 증명
return strings.TrimSpace(username), strings.TrimSpace(password)
예 코드:
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 }
위 내용은 Go에서 'getpasswd' 기능을 시뮬레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!