abiosoft / abiosoft/ishell

Wrong output from shell.Println when receiving from a goroutine

Offen
#19 11 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
in progress
Vorherrschende Sprache
Go
Sterne
1.8k
Forks
213
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

I am trying to print some output from a channel to the shell. When receiving from a goroutine it prints without a newline and does not give the prompt back. Example:
```go
package main

import (
"time"
"github.com/abiosoft/ishell"
)

func feed(c chan string) {
for i := 0; i<3; i++ {
c <- "Feedback"
time.Sleep(time.Second)
}
}

func main(){
shell := ishell.New()
c := make(chan string)

// listen
go func() {
for msg := range(c) {
shell.Println(msg)
}
}()

// this does output correctly
//feed(c)
// this does not
go feed(c)

shell.Start()
}
```
`go feed(c)` outputs:
```bash
>>> Feedback
Feedback
Feedback
```
To get the prompt back you have to type a letter

`feed(c)` outputs correctly:
```bash
Feedback
Feedback
Feedback
>>>
```

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.