Golang 展示类中方法的重载
在本文中,我们将学习如何使用不同的示例在类中重载方法。Go编程语言没有类的概念,因此将使用函数重载来执行程序。因此,代码可以更具灵活性和可读性。例如,您可以创建一个接受接口作为参数的函数,然后使用实现该接口的多种类型进行调用。让我们看看它的执行。
方法1:使用自定义类型MyInt
这里,它包含两个方法Print()和PrintWithNumber(),其中的值可以在这些MyInt类型的函数中发送。
步骤
- 步骤1 - 创建一个main包并在程序中声明fmt(格式化包)包
-
步骤2 - 创建一个唯一类型别名,将内置的int类型取名为MyInt
-
步骤3 - 定义MyInt类型的两个关联方法,Print()和PrintWithNumber(number string)
-
步骤4 - 在main()函数中创建一个名为val的MyInt类型变量,并给它赋值6
-
步骤5 - 使用Print()函数打印值6,传入的参数是val变量
-
步骤6 - 在val变量上调用PrintWithNumber(number string)函数,传入参数”number”。这将打印数字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
方法2:使用具有 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的接口。两个程序都给出了类似的输出。