Go では、ポインターが逆参照されない限り、null ポインターでメソッドを呼び出しても問題ありません。
type empty struct{}
func (e *empty) Allocated() bool { return e != nil }
(実行可能なコードについては、ここをクリックしてください)
ただし、Java では、メソッドがメンバー変数を逆参照しない場合でも、null ポインターでメソッドを呼び出すと、null ポインター例外が発生します。
class Test {
public boolean Allocated() { return this != null; }
}
この動作が存在する理由を誰かが知っていますか? それが与える利点はありますか?考え?