Go 内でのテストの理由でファクトリ関数を再割り当てして、その型の 1 つをモックしたいときに、特定のパッケージ内でファクトリ関数を使用するリスクを軽減することに興味があります。
ファクトリ関数を関数の引数として渡し、ファクトリをデータ メンバーとして保持する構造体を作成する人を見てきました。代わりに、トップレベルの関数変数を保持し、特定のファイル内である実装を別の実装で上書きすることは可能ですか? 私は以下を試しました:
type AirportFactory func (string, int, int) Airport
var makeAirport AirportFactory = func(n string, x int, y int) Airport {
return airport{name: n, pos: Position{X: x, Y: y}}
}
makeAirport = func(n string, x int, y int) Airport {
return airport{name:"default", pos:Position{X:0, Y:0}}
}
しかし、コードをビルドすると、最後の割り当ての最後の行で 6g から次のエラーが表示されます。
non-declaration statement outside function body
var
これにより、少なくとも最上位レベルでは、関数型の s が const のように見えます。これを回避する方法はありますか?