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

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

王林
リリース: 2024-02-08 23:06:17
転載
370 人が閲覧しました

作为通道实现的 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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート