package main
import "log"
type Car interface {
Driving()
Brake()
}
type BMWCar struct {
Name string
}
func (b BMWCar) Driving() {
log.Printf("%s driving", b.Name)
}
func (b BMWCar) Brake() {
log.Printf("%s brake", b.Name)
}
func (b BMWCar) ChangeName(name string) {
b.Name = name
}
type BenzCar struct {
Name string
}
func (b *BenzCar) Driving() {
log.Printf("%s driving", b.Name)
}
func (b *BenzCar) Brake() {
log.Printf("%s brake", b.Name)
}
func (b *BenzCar) ChangeName(name string) {
b.Name = name
}
func main() {
var bmw1 Car = BMWCar{Name: "bmw car"}
bmw1.Driving()
bmw1.Brake()
var bmw2 Car = &BMWCar{Name: "bmw car"}
bmw2.Driving()
bmw2.Brake()
var benz1 Car = &BenzCar{Name: "benz car"}
benz1.Driving()
benz1.Brake()
var bmw3 = BMWCar{Name: "bmw car"}
bmw3.ChangeName("new bmw car")
bmw3.Driving()
bmw3.Brake()
var bmw4 Car = &BMWCar{Name: "bmw car"}
bmw3.ChangeName("new bmw car")
bmw4.Driving()
bmw4.Brake()
benz3 := BenzCar{Name: "bmw car"}
benz3.ChangeName("new benz car")
benz3.Driving()
benz3.Brake()
benz4 := BenzCar{Name: "bmw car"}
benz4.ChangeName("new benz car")
benz4.Driving()
benz4.Brake()
}