cannot use x (type T) as type U in assignment
Goで型が一致しない代入を行った際のコンパイルエラー
概要
Goで変数に値を代入する際、変数の型と値の型が一致しない場合に発生するコンパイルエラーです。Goは静的型付け言語であり、暗黙の型変換を行いません。
エラーメッセージ
cannot use x (type int) as type int64 in assignment
cannot use s (type string) as type []byte in argument to fmt.Println
cannot use f (type func()) as type func() error in assignment
原因
- 数値型の不一致: int、int32、int64などの混在
- カスタム型: 同じ基底型でも別の型として定義されている
- インターフェースの未実装: 必要なメソッドが実装されていない
- 関数シグネチャの不一致: 引数や戻り値の型が異なる
解決策
1. 明示的な型変換
| |
2. 数値型の変換
| |
3. カスタム型の変換
| |
4. スライスと配列
| |
5. インターフェースの実装
| |
6. 関数型の一致
| |
7. ジェネリクス(Go 1.18+)
| |
8. 型アサーション
| |
よくある間違い
- int と int64 を同じ型だと思い込む
- 定義した型(type X int)と基底型(int)を混同する
- interface{}から具体的な型に変換せずに使用する
関連エラー
参考リンク
Go の他のエラー
この記事は役に立ちましたか?