返回

接口里 Methods 的名字有什么规则?

后端

Golang中接口里Methods的名字有什么规则?

在 Golang 中,接口里的 Methods 的名字要么都有名字,要么都没有,否则会报错。例如,下面的代码将报错:

type MyInterface interface {
  Method1(param1 int, param2 string)
  method2(param1 int, param2 string)
}

这是因为 Method1 的参数有名字,而 method2 的参数没有名字。为了修复此错误,可以将 method2 的参数也加上名字:

type MyInterface interface {
  Method1(param1 int, param2 string)
  method2(param1, param2 string)
}

或者,也可以将 Method1 的参数都去掉名字:

type MyInterface interface {
  Method1(int, string)
  method2(int, string)
}

接口简介

接口是 Golang 中非常重要的一个概念。它允许我们定义一组方法,而无需指定这些方法的具体实现。这使得我们可以很容易地创建抽象数据类型,而无需担心底层的实现细节。

接口的语法很简单。首先,我们需要使用 interface 来声明一个接口。然后,我们需要列出接口中包含的方法。这些方法被称为接口的方法,或者接口的方法签名。

接口的方法签名与普通函数的函数签名非常相似。唯一不同的是,接口的方法签名不能有函数体。

例如,下面的代码定义了一个名为 MyInterface 的接口:

type MyInterface interface {
  Method1(param1 int, param2 string)
  method2(param1 int, param2 string)
}

这个接口包含两个方法:Method1method2Method1 方法接收两个参数,一个 int 类型,一个 string 类型,并返回一个 int 类型。method2 方法也接收两个参数,两个都是 int 类型,并返回一个 string 类型。

接口可以被任何类型实现。为了实现一个接口,我们只需要定义一个类型,并为该类型实现接口中定义的所有方法。

例如,下面的代码定义了一个名为 MyStruct 的结构体,实现了 MyInterface 接口:

type MyStruct struct {
  field1 int
  field2 string
}

func (s MyStruct) Method1(param1 int, param2 string) int {
  return param1 + s.field1
}

func (s MyStruct) method2(param1 int, param2 string) string {
  return param2 + s.field2
}

现在,我们就可以使用 MyStruct 类型来实现 MyInterface 接口了。

例如,下面的代码创建一个 MyStruct 类型的变量,并调用它的 Method1method2 方法:

var s MyStruct

s.Method1(10, "Hello")
s.method2(20, "World")

这将输出以下结果:

10
HelloWorld

结论

接口是 Golang 中非常重要的一个概念。它允许我们定义一组方法,而无需指定这些方法的具体实现。这使得我们可以很容易地创建抽象数据类型,而无需担心底层的实现细节。