プログラマー VTuber 衣亥栖ティオのちょっとした話

Youtubeに投稿したプログラミング学習動画の補足説明をするためのブログです。

プログラマーへの道 #90 の補足説明

こんにちは、プログラマーVTuberの衣亥栖ティオです。
今回は以下の動画の補足説明をします。 動画内で実装したソースコードも載せています。


今回の動画で実装したソースコード

前回との差分は以下です。

https://github.com/tio-iis/memo-server/pull/17/files

動画時点の全体ソースコードは以下です。

https://github.com/tio-iis/memo-server/tree/660449a6ebcba7906c8fca00ae41f5e2df21f3a5

mapの要素を削除する

mapの要素を削除するには delete() を利用します。

https://msty.hatenablog.jp/entry/go-map-delete

動画内では以下の実装で要素を削除する前に"要素が存在するかどうか"を確認しています。
https://github.com/tio-iis/memo-server/pull/17/files#diff-2873f79a86c0d8b3335cd7731b0ecf7dd4301eb19a82ef7a1cba7589b5252261R108

要素の存在については以下を読んでください。
https://github.com/tio-iis/memo-server/pull/17/files#diff-2873f79a86c0d8b3335cd7731b0ecf7dd4301eb19a82ef7a1cba7589b5252261R108

string から int へのキャスト

stringからintのキャストについては以下に説明があります。
https://pkg.go.dev/strconv#Atoi

第2戻り値でエラーが返ってくるので、忘れずにハンドリングしましょう。 動画内だと以下のようにエラーだった場合に処理を終わっています。
https://github.com/tio-iis/memo-server/pull/17/files#diff-2873f79a86c0d8b3335cd7731b0ecf7dd4301eb19a82ef7a1cba7589b5252261R101-R106

URLのクエリパラメータについて

URLにはクエリパラメータというものが存在します。
https://developer.mozilla.org/ja/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web#query

Googleにアクセスする際のURLにも最後にhlというパラメータを付与することができます。 例えば以下のように hl=ja というパラメータを付与すると、言語として日本語を選択することができ、
https://www.google.com/?hl=ja

以下のように hl=en というパラメータを付与すると、言語として英語を選択することができます。
https://www.google.com/?hl=en

今回の削除用のエンドポイントでは、クエリパラメータにメモIDを指定することによって、バックエンドサーバに"どのデータを削除するのか?"という削除対象を伝えています。 クエリパラメータはとても便利な仕組みなので、上記の解説ドキュメントを読むことをおすすめします。

文字列を区切って配列化する

URLのクエリパラメータとして指定しているメモのIDはカンマ区切りになっています。 カンマで区切られたメモのIDを配列化するのに利用しているのが strings.Split() です。
https://itsakura.com/golang-split