4

全て。執筆中のライブラリの概念実証として、Go でチャット クライアントを作成しています。ユーザー入力を受け取り、受信メッセージを同じターミナル ウィンドウに出力する必要があります。以下を検討してください。

user@debian ~ $ ./client
no session> 192.168.1.100
> Hello, there!
Hi!
> So, did you get that feature working yet?
Nope. I thought you were going to ask on StackOverflow.
>> Yeah, I'm aski

入力中に別のメッセージが届いた場合は、次のメッセージが表示されます。

user@debian ~ $ ./client
no session> 192.168.1.100
> Hello, there!
Hi!
> So, did you get that feature working yet?
Nope. I thought you were going to ask on StackOverflow.
Or did you want me to?
>> Yeah, I'm aski

Goでこれを行う方法はありますか?

ありがとう :)

4

2 に答える 2

4

そのように動作するコンソール アプリケーションを使用したことがある場合は、おそらく ncurses のようなライブラリを使用してそれを実行していました。非常に複雑なので、自分でプログラムしたくないでしょう。

Goの場合、 termbox-goをお勧めします。簡単に手に入れることができ、適切に構造化されたAPIを備えています。

于 2012-11-21T00:09:15.207 に答える
0

これは適切な方法ではないかもしれません (コンソール開発者ではありません) が、しばらく前に、Android フォンで実行する Go でターミナル アニメーションを作成しました。画面のクリア、描画、クリアなどでこれを達成しました。

画面をクリアするために何を使用したか覚えていませんが、たとえばこれを試してみたところ、fmt.Print("\033[2J")うまくいくようです。ここで注意事項です。画面をクリアするためのエスケープ シーケンスのサポートは、プラットフォームやターミナル エミュレータによって異なる場合があります。

しかし、それを念頭に置いて、メッセージが受信されたときにクライアントがどのように見えるかのバッファーを維持し、画面をクリアしてから、バッファーを変更して再印刷することができます。

于 2012-11-20T23:51:09.823 に答える