我正在使用以下代码......
package main
import (
"fmt"
)
type traingle interface {
area() int
}
type details struct {
height int
base int
}
func (a details) area() int {
s := a.height + a.base
fmt.Println("the area is", s)
return s
}
func main() {
r := details{height: 3, base: 4}
var p1 traingle
p1.area(r)
}
Run Code Online (Sandbox Code Playgroud)
没有得到为什么得到以下错误
调用p1.area的参数太多了(详情)想要()
我假设三角形的p1对象可以使用参数调用area()方法.不明白它失败的原因.
该函数area在其定义中不带任何参数:
area() int
// ...
func (a details) area() int {
Run Code Online (Sandbox Code Playgroud)
因此,正如错误所说,将任何参数传递给它的论点太多了.函数中没有任何地方使用参数.它根据接收器的属性进行所有计算,而不是任何参数.您还在未初始化(零)接口值上调用它.它看起来像你想要的可能是:
r := details{height: 3, base: 4}
r.area()
Run Code Online (Sandbox Code Playgroud)