package strategeimport ( "fmt" "testing")type travel interface { goTravel(name string)}type travelByCar struct {}func (t *travelByCar) goTravel(name string) { fmt.Println(name + " travel by car")}type travelByPlane struct {}func (t *travelByPlane) goTravel(name string) { fmt.Println(name + " travel by plane")}type TravelContext struct { name string travel}func NewTravelContext(name string, travelType string) *TravelContext { t := &TravelContext{ name: name, } switch travelType { case "轿车": t.travel = &travelByCar{} case "飞机": t.travel = &travelByPlane{} default: t.travel = &travelByCar{} } return t}func (t *TravelContext) GoTravel() { t.travel.goTravel(t.name)}func TestMain(t *testing.T) { p1 := NewTravelContext("小明", "轿车") p2 := NewTravelContext("小明", "飞机") p1.GoTravel() p2.GoTravel()}