Go 语言程序演示类中方法的重载


本文将学习如何在类中使用不同的示例重载方法。Go 编程语言没有类的概念,因此将使用函数重载来执行程序。这样可以使代码更灵活、更易读。例如,您可以创建一个接受接口作为参数的函数,然后用实现该接口的几种类型来调用它。让我们看看它的执行过程。

方法 1:使用自定义类型 MyInt

这里包含两个方法 Print() 和 PrintWithNumber(),其中可以在这些 MyInt 类型的函数中发送值。

算法

  • 步骤 1 − 创建一个包 main 并声明程序中的 fmt(格式化包)包。

  • 步骤 2 − 为内置 int 类型创建一个唯一的别名 MyInt。

  • 步骤 3 − 定义 MyInt 类型的两个关联方法 Print() 和 PrintWithNumber(number string)。

  • 步骤 4 − 在 main() 函数中创建一个名为 val 的 MyInt 类型变量,并赋予它值 6。

  • 步骤 5 − 使用 val 变量上的 Print() 函数打印值 6。

  • 步骤 6 − 使用参数 "number" 调用 val 变量上的 PrintWithNumber(number string) 函数。这将打印数字 6 并在其后打印单词 "number"。

  • 步骤 7 − 使用 fmt.Println() 函数执行打印语句,其中 ln 表示换行。

示例

在本例中,我们将看到如何使用自定义类型 MyInt 在类中重载方法。

package main
import "fmt"

type MyInt int

func (val MyInt) Print() {
	fmt.Println(val)   //print val created in main
}

func (val MyInt) PrintWithNumber(number string) {
	fmt.Println(val, number)    //print both val of type MyInt and number of type string
}

func main() {
	val := MyInt(6)   //create val
	fmt.Println("The representation of function overloading is:")
	val.Print()                   // Output: 6
	val.PrintWithNumber("number") // Output: 6 number
}

输出

The representation of function overloading is:
6
6 number

方法:使用 MyInt 类型的接口

这里,.. 表示 print 函数可以接受任意数量的参数。让我们看看代码和算法来了解它是如何完成的。

语法

func len(v Type) int

len() 函数用于获取任何参数的长度。它以一个数据类型变量作为参数,我们希望找到它的长度,并返回一个整数,即变量的长度。

算法

  • 步骤 1 − 创建一个包 main 并声明程序中的 fmt(格式化包)包。

  • 步骤 2 − 为内置 int 类型创建别名 MyInt。

  • 步骤 3 − 创建一个与 MyInt 类型关联的方法 print,使得 print(args...interface)。这里,… 用于接受任意数量的参数。

  • 步骤 4 − 在下一步中,使用 print 方法内部的 if 语句检查 args 切片的长度。

  • 步骤 5 − 如果 args 切片的长度为零,则打印 MyInt 类型的值;如果 args 切片的长度大于零,则打印 MyInt 类型的值,后跟 args 切片。

  • 步骤 6 − 在 main() 方法中创建一个名为 val 的 MyInt 类型变量,并赋予它值 6。

  • 步骤 7 − 使用 fmt.Println() 函数打印 val 的值,其中 ln 表示换行。

示例

在本例中,我们将学习如何使用 MyInt 类型的接口在类中演示方法的重载。

package main
import "fmt"
type MyInt int

func (val MyInt) Print(args ...interface{}) {
	if len(args) == 0 {         //if the length of args slice is 0 print if statement 
		fmt.Println(val)
	} else {
		fmt.Println(val, args) //else print it 
	}
}

func main() {
	val := MyInt(6)  //create val
	fmt.Println("The function overloading is represented here:")
	val.Print()         // Output: 6
	val.Print("number") // Output: 6 [number]
}

输出

The function overloading is represented here:
6
6 [number]

结论

我们使用两个示例执行了方法重载程序。在第一个示例中,我们使用了自定义类型 MyInt,而在第二个示例中,我们使用了 MyInt 类型的接口。两个程序都给出了类似的输出。

更新于: 2023年2月1日

2K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

立即开始
广告