プログラマーへの道 #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