Closed2
『GO言語で作るインタプリタ』を読む
型アサーションについて
a tour of goのこちらもあわせて
今の自分の理解では、
x := hoge.(T)
とすることで型の制約をかけた宣言ができ、
x, ok := hoge.(T)
とすることで、Tでの型の制約が成功したかどうかをokで見ることができる。
例えば
exp, ok := stmt.Expression.(*ast.PrefixExpression)
if !ok {
t.Fatalf("stmt is not ast.PrefixExpression. got=%T", stmt.Expression)
}
これは、stmtのExpressionがastパッケージのPrefixExpressionのポインタ型になっているかどうかを確認している、のだと思う。
『プログラミング言語GO』に次のような記載があって、ちょっとわかった気がしたのでメモ
_, ok := x.(T) //型を検査するが、結果は破棄
つまり型の検査に型アサーションを使っている。テストの中で型のチェックに使われているというわけ。
このスクラップは2022/06/18にクローズされました