2011-11-28 3 views
0

난 그냥 몇 가지 입력을 얻으려면 게시하고 그것을 얻기 후에 나는이 같은이 일을하고 기압을 표시하려면 :이 입력이 두 번

in := bufio.NewReader(os.Stdin); 
input, err = in.ReadString('\n'); 
if err != nil { 
    fmt.Println("Error: ", err) 
    os.Exit(1) 
} 
fmt.Printf("This is your", input) 

...하지만이를 실행하고 일부 입력을 입력 한 후 다음과 같이 항상 입력 내용을 두 번 표시합니다.

This is just a test 
This is your This is just a test 

어쨌든 첫 번째 줄을 제거 할 수 있습니까?

+0

실제 코드입니까? 마지막에 개행 문자가없는 정적 문자열을 제외한 모든 것을 인쇄하기 위해'fmt.Printf'를 말하지 않았습니다. – mkb

답변

1

나는 첫 번째 줄이 에코 된 입력 텍스트라고 가정하니? 이것은 실제로 프로세스의 터미널 기능입니다. 이동 런타임은 다른 파일과 마찬가지로 Stdin을 처리하므로 터미널 속성에 직접 액세스 할 수 없습니다. 그러나 CGO와 함께 무언가를 해킹 할 수 있으며 here에 설명 된 접근 방식을 사용할 수 있습니다.

4

패키지로 아직 아무 것도 시도하지 않았지만이 경우 도움이 될 것으로 생각됩니다. exp/terminal. 특히 ReadPasword 기능 문서는 다음과 같습니다.

ReadPassword reads a line of input from a terminal without local echo. 
This is commonly used for inputting passwords and other sensitive data. 
The slice returned does not include the \n.