Day 1: Go言語の核心 - 課題

チャレンジ1: 型システムの理解

異なる数値型を扱う汎用的な計算関数を実装してください。

要件

  • int、float64、int64の各型に対応した加算関数を作成する
  • 型アサーションは使用禁止
  • 各関数をテストするmain関数を実装する

テストケース

addInt(10, 20) → 30
addFloat64(10.5, 20.3) → 30.8
addInt64(1000000000, 2000000000) → 3000000000

---

チャレンジ2: ポインタとメモリ効率

大きな構造体を扱う際の、値渡しとポインタ渡しのパフォーマンス比較をしてください。

要件

  • 1000要素のint配列を持つ構造体を定義する
  • 値渡しでデータを処理する関数を作成する
  • ポインタ渡しでデータを処理する関数を作成する
  • 両者の実行時間を計測して比較する

期待される出力例

値渡し: XXms
ポインタ渡し: XXms

---

チャレンジ3: スライスの内部理解

スライスの容量と再割り当てを可視化するプログラムを作成してください。

要件

  • 初期容量1のスライスを作成する
  • 0から19までの数値を順次appendする
  • 容量が変更されるたびに、長さ・旧容量・新容量を出力する
  • 最終的な長さと容量を出力する

期待される出力形式

再割り当て: 長さ=X, 旧容量=X → 新容量=X
再割り当て: 長さ=X, 旧容量=X → 新容量=X
...
最終: 長さ=20, 容量=XX

---

提出について

  • 各チャレンジを別々のファイル(challenge1.go, challenge2.go, challenge3.go)として作成してください
  • すべてのコードがコンパイルエラーなく実行できることを確認してください
  • 結果が期待通りになることを確認してください