Golang初心者が最初につまづくこと




どうも高妻です。Twitterでプログラミングのことや暗号通貨のことをつぶやいているのでよかったらフォローしてください。  

Golang独自のワード

Golangのワードは特殊すぎて最初なんのことを言ってるのか全然わからず、何がわかっていないのか現状把握するのが大変でしたね。

gorutineとかchannel、make、select- caseなどなど。

処理を追うのが難しい

gorutineで並列処理が書かれている中に、channelを使って値の受け渡しがいろんなところで行われているとどこで何が起こっているのか把握が難しくなります。

Node.jsなどの非同期プログラミングに慣れていればまだ理解しやすいでしょうが、JavaとかRubyしか書いたことない場合は最初この考え方に苦戦すると思います。

エラーハンドリングを毎回書かないといけない

これを毎回書かないといけないのは地味にめんどくさくてきついですね。あとエラーのスタックトレースも標準で対応していないのでpkg/errorsを使って自分で対応しないといけません。

channelの理解が難しい

channelはGCPのPub/SubやAWSのKinesysと同じようなものなのですが、扱い方にクセがあり慣れるのに時間がかかります。

channelへの送受信の書き方をみたときは驚愕しました。パット見でなんだこれ状態ですね。。。慣れればシンプルな書き方なので慣れるしかないです。

channelのブロッキング処理

gorutineの中でchannelに送信された値を別のgorutineの処理で非同期で受け取るときに処理をブロッキングするのですがそのときにselect-case文を使います。

これも最初見たときはGolangのswitch-case文かと思ったら違いました。複数channelの受信を非同期に行うための独自の構文でした。これにforの無限ループをよく組み合わせて使ったりするので余計に難しく感じましたね。

 

The following two tabs change content below.

高妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 現在はTwitterなどSNSのテキスト解析を行うソーシャルメディア分析のサーバーサイドを開発中。言語はNode.js、Kotlinを使用。






よく読まれている関連記事はこちら



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です