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 类型的接口。两个程序都给出了类似的输出。