一个方法 return 一个具有 return 类型的指针可以是这个方法的值吗
Could a method return a pointer with return type of this method is value
我看到一段代码如下:
只是想知道 draw()
的 value 方法 已经实现了,为什么 return pointer 实际上是结构的。
type Shape interface {
draw()
}
type Rectangle struct {
}
func (Rectangle) draw() {
fmt.Println("Draw Rectangle")
}
type Square struct {
}
func (Squre) draw() {
fmt.Println("Draw Square")
}
type Circle struct {
}
func (Circle) draw() {
fmt.Println("Draw Circle")
}
type ShapeFactory struct {
}
func (*ShapeFactory) CreateShape(shape string) Shape {
if shape == "Rectangle" {
return &Rectangle{}
} else if shape == "Square" {
return &Square{}
} else if shape == "Circle" {
return &Circle{}
}
return nil
}
我觉得是不是应该像下面这样实现一个指针方法,这样方法CreateShape
就可以return结构体的指针了?
type Rectangle struct {
}
func (*Rectangle) draw() {
fmt.Println("Draw Rectangle")
}
CreateShape
方法上定义的 return 类型不是结构而是接口。因此 CreateShape
可以 return 任何类型,只要它实现了 Shape
接口。
我看到一段代码如下:
只是想知道 draw()
的 value 方法 已经实现了,为什么 return pointer 实际上是结构的。
type Shape interface {
draw()
}
type Rectangle struct {
}
func (Rectangle) draw() {
fmt.Println("Draw Rectangle")
}
type Square struct {
}
func (Squre) draw() {
fmt.Println("Draw Square")
}
type Circle struct {
}
func (Circle) draw() {
fmt.Println("Draw Circle")
}
type ShapeFactory struct {
}
func (*ShapeFactory) CreateShape(shape string) Shape {
if shape == "Rectangle" {
return &Rectangle{}
} else if shape == "Square" {
return &Square{}
} else if shape == "Circle" {
return &Circle{}
}
return nil
}
我觉得是不是应该像下面这样实现一个指针方法,这样方法CreateShape
就可以return结构体的指针了?
type Rectangle struct {
}
func (*Rectangle) draw() {
fmt.Println("Draw Rectangle")
}
CreateShape
方法上定义的 return 类型不是结构而是接口。因此 CreateShape
可以 return 任何类型,只要它实现了 Shape
接口。