如何修复golang太多的参数错误

use*_*104 0 go

我正在使用以下代码......

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()方法.不明白它失败的原因.

Adr*_*ian 6

该函数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)