Golang程序 显示类中方法重载
在这篇文章中,我们将通过不同的例子来学习如何重载类中的方法。Go编程语言没有类的概念,所以将使用函数重载来执行程序。因此,代码可以更加灵活和可读。举个例子,你可以创建一个函数,接受一个接口作为参数,然后用几个实现该接口的类型来调用它。让我们来看看它的执行。
方法1:使用自定义类型MyInt
这里,它包含两个方法Print()和PrintWithNumber(),在这些MyInt类型的函数中可以发送值。
算法
- 第1步 – 创建一个包main并在程序中声明fmt(格式包)包
-
第2步 – 为内置的int类型创建一种独特的别名,即MyInt。
-
**第3 步 – **定义MyInt类型的两个相关方法,Print()和PrintWithNumber(数字字符串)。
-
第4步 – 在main()函数中创建一个名为val的MyInt类型的变量,并赋予其值6。
-
第5步– 为了打印数值6,在val变量上使用Print()函数。
-
第6步 – 调用PrintWithNumber(number string)函数,参数为val变量的 “number”。这将打印数字6和后面的 “数字”。
-
第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
方法2: 使用带有MyInt类型的接口
这里,.意味着打印函数可以接受任何数量的参数。让我们看看代码和算法,了解它是如何完成的。
语法
func len(v Type) int
len()函数是用来获取任何参数的长度的。它需要一个参数作为数据类型的变量,我们希望找到它的长度,并返回整数值,即该变量的长度。
算法
- 第1步 – 创建一个包main,并在程序中声明fmt(格式包)包。
-
第2步 – 为内置的int类型MyInt创建一个别名。
-
第3步 – 创建一个与MyInt类型相关的方法print,如print(args…interface)。这里,……帮助d采取任何数量的参数。
-
第4步 – 在下一步中,使用print方法中的if语句检查args片的长度。
-
第5步 – 如果args片的长度为零,则打印MyInt类型的值;如果args片的长度大于零,则打印MyInt类型的值,然后是args片。
-
第6步 – 创建一个名为val的MyInt类型的变量,并在main()方法中赋予其值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类型的接口。这两个程序的输出结果相似。