ホームページ >バックエンド開発 >Golang >チャネルとして実装された Python スタイルのジェネレーター: 読み取りが早すぎます

チャネルとして実装された Python スタイルのジェネレーター: 読み取りが早すぎます

王林
王林転載
2024-02-08 23:06:17389ブラウズ

作为通道实现的 Python 风格生成器:过早阅读

php エディターの Youzi が、チャネル実装用の Python スタイル ジェネレーターに関する記事を提供しました。この投稿では、早読みの概念と、チャネルを使用して Python スタイルのジェネレーターを実装する方法を紹介します。このようにして、Python と同様のジェネレーター構文を PHP で使用できるため、より柔軟で効率的なプログラミング エクスペリエンスが提供されます。あなたが PHP 開発者であっても、ジェネレータに興味がある人であっても、この記事は貴重な知識と実用的なヒントを提供します。この興味深いトピックを一緒に探ってみましょう!

質問内容

次のチャネルを使用して Python スタイルのジェネレーターを実装しようとしています:

リーリー

これは正常に動作します。出力は

です。 リーリー

しかし、私が変わるとき

リーリー ###に### リーリー

結果は異なります:

リーリー

2 番目のケースでは、チャネルからの読み取りを開始する前に

c.Iterate()

が必要であることがわかりました。 リーリー 任意のコンテンツをチャネルに送信する機会。 append()

が呼び出されるとき、

main() ゴルーチンは r スライスのスペースを再割り当てするのに時間がかかるため、これは最初のケースには当てはまりません。 Iterate() が適切に動作するようにコードを調整する方法をアドバイスしてください。

解決策これ:

リーリー

は、5 つの要素を含むスライスをすべて 0 で初期化します。次に、さらに 5 つの要素を追加します。プログラムは最初の 5 つのゼロ要素を読み取ります。

使用:

r:=make([]int,0,5)

以上がチャネルとして実装された Python スタイルのジェネレーター: 読み取りが早すぎますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。