2011-11-16 3 views
3

입력을 수집하고 입력을 표시하기 위해 이것을 사용합니다. 그러나 이렇게하면 "something"텍스트가 새 줄에 표시되지만 원하는 것은 같은 줄에 표시 할 텍스트, 어떤 아이디어?bufio.NewReader는 항상 새 줄을 만듭니다./

func main() { 
    fmt.Println("Example") 
    print("example: ") 
    in := bufio.NewReader(os.Stdin); 
    input, err := in.ReadString('\n'); 
    if err != nil { 
     fmt.Println("Error: ", err) 
    } 

    fmt.Println(input, "something") 
} 

답변

2

fmt.Println()은 자동으로 출력의 끝에 개행을 추가합니다.

"형식 문자열"과 입력 목록을 사용하는 Printf를 사용해 볼 수 있습니다.

예제는 다음과 같습니다

이 경우
func main() { 
    fmt.Println("Example") 
    print("example: ") 
    in := bufio.NewReader(os.Stdin); 
    input, err := in.ReadString('\n'); 
    if err != nil { 
     fmt.Println("Error: ", err) 
    } 

    fmt.Printf("something : %s", input) 
} 

는 % s는 문자열 유형에 대한 자리 표시 자입니다. 모든 자리는 FMT의 godoc에서 찾을 수 있습니다 : 입력 자체가 마지막에 개행 문자가있는 경우

http://golang.org/pkg/fmt/는 또한, 당신은 \ n 문자 해내 패키지 strings에서 Trim를 사용할 수 있습니다.

+0

문자열과 함께 사용할 수 있습니까? "fmt.Printf (string : % s, input)"가 작동하지 않습니다. ( –

+0

첫 번째 인수는 문자열 형식이어야합니다 (예 : 큰 따옴표로 묶음). 모든 후속 인수는 순서에 따라 자리 표시 자 유형과 일치해야합니다. 그대로 그것은 필요에 자리를 대체하는 제 문자열을 출력한다 또 다른 예는 다음과 같습니다.'fmt.Printf은 ( 는 "INT가 % d를 문자열 %의 S는"3, "문자열입니다.") (int 유형에 % d, % s는 문자열에 적용됩니다.) – Robbie

3

줄 바꿈을 input에서 삭제하십시오. 예를 들어,

package main 

import (
    "bufio" 
    "fmt" 
    "os" 
    "strings" 
) 

func main() { 
    fmt.Println("Example") 
    print("example: ") 
    in := bufio.NewReader(os.Stdin) 
    input, err := in.ReadString('\n') 
    if err != nil { 
     fmt.Println("Error: ", err) 
     return 
    } 
    fmt.Println(strings.TrimRight(input, "\n"), "something") 
} 

입/출력 : 이전 답변의 창에

Example 
example: some input 
some input something 
+0

좋지만 "패닉 : 런타임 오류 : 슬라이스 경계가 범위를 벗어났습니다." –

+0

나를 위해 작동합니다. 'err'가 nil이 아니고'input'이 비어 있다면,'os.Exit (1)'또는'panic (err)'또는'return'을 호출하거나 적어도 두번째' fmt.Println()'else 블록에서. – mkb

+0

return 문을 사용하여 수정 된 버전을 실행하면 어떤 오류가 발생합니까? – peterSO

0

(즉 관련이 있는지 확실하지 않습니다) 아무도 나를 위해 일하지 않는다. 기본적인 아이디어가 오히려 strings.TrimRight(input, "\n")를 사용하는 것보다 당신이 strings.TrimRight(input, "\r\n")
이이 작전의 문제를 해결 같은 \r 문자를 포함 할 것입니다 https://play.golang.org/p/_9N_RwmBvd

에 링크 https://groups.google.com/d/msg/golang-nuts/hWoESdeZ398/qDbTogJhj88J : 그래서 여기에 내가 발견 해상도입니다.

고정 입력 제거가있는 OP 코드!

func main() { 
    fmt.Println("Example") 
    print("example: ") 
    in := bufio.NewReader(os.Stdin); 
    input, err := in.ReadString('\n'); 
    if err != nil { 
     fmt.Println("Error: ", err) 
    } 

    fmt.Println(strings.TrimRight(input, "\r\n"), "something") 
} 

추신 : necro를 위해 유감스럽게 생각한다 나는 20 분 인터넷 검색을 낭비하는 것으로부터 누군가를 구하기를 바라고있다!

관련 문제