2024年11月27日水曜日 14:03[Go]型埋め込み使用時のjson.Marshalの罠型埋め込みを使用している構造体をjson.Marshal [https://pkg.go.dev/encoding/json#Marshal]でJSON文字列に変換する際、意図しない挙動になるケースがあるので気を付ける。 下記のような構造体のインスタンスをjson.Marshalで文字列に変換する処理がある。 type Event struct { ID int time.Time // <- 埋め込みフィールド } event := Event{ ID: 1234, Time: time.now(), // <- 構造体のインスタンス化時、埋め込みフィールドの名前は構造体の名前go
2024年11月18日月曜日 15:21[Go]型埋め込みの問題点を意識するそもそも型埋め込みとは.. 以下のように構造体の中に別の構造体を埋め込むこと。 type Base struct { ID int Name string } func (b Base) GetName() string { return b.Name } type User struct { Base // 型埋め込み Email string } 以下のように、User構造体のインスタンスからBase構造体の中身を直接使用できる。これを プロモートする と呼ぶ user := User() user.ID // user.Bgo
2024年11月1日金曜日 12:49[JavaScript]Date#setMonthでの注意点発生した問題 以下のような月末日取得の実装を行なっていた。 const date = new Date(); date.setMonth(date.getMonth() + 1); date.setDate(0); date.setHours(23, 59, 59, 999); console.log(date) setMonth で対象の月 + 1の月をセットし、 setDate(0) で前月の月末日をセット => 対象の月の月末日が求められるというロジックである。 基本的には正常に機能していたのだが、対象の日付が 2024-10-31 の場合に、 2024-11-30 が出力さJavaScript