Go语言任意类型添加方法

Go语言任意类型添加方法教程

Go 语言 中除了可以为 结构体 添加方法,还可以为任意 类型 使用 type 定义别名,之后,就可以为别名添加方法。

为任意类型添加方法

语法

type MyString string func (m MyString)IsLargeString()bool{ if len(m) > 10{ return true } return false }

说明

我们为内置类型 string 定义了一个别名 MyString,接着,为自定义类型 MyString 添加方法 IsLargeString,该方法返回 bool 类型。

在该方法里,我们判断字符串的长度,如果长度大于 10,那么返回 true,否则,返回 false。

案例

为string类型添加方法

为内置类型 string 添加方法

package main import ( "fmt" ) //为内置类型 string 添加方法 type MyString string func (m MyString)IsLargeString()bool{ if len(m) > 10{ return true } return false } func main() { fmt.Println("嗨客网(www.haicoder.net)") var myString MyString = "Hello HaiCoder" fmt.Println("myString = ", myString.IsLargeString()) myString = "HaiCoder" fmt.Println("myString = ", myString.IsLargeString()) }

程序运行后,控制台输出如下:

31_golang任意类型添加方法.png

首先,我们使用 type 关键字为内置类型 string 定义了一个别名 MyString,接着,为 MyString 添加了一个方法 IsLargeString。

在方法 IsLargeString 里面判断,如果其长度大于 10,那么返回 true,否则,返回 false。接着,在 main 函数里面,我们定义一个 MyString 类型的 变量,并调用其方法 IsLargeString。

为int类型添加方法

为内置类型 int 添加方法

package main import ( "fmt" ) //为内置类型 int 类型添加方法 type MyInt int func (m MyInt)IntAbs()MyInt{ if m >= 0{ return m } return -m } func main() { fmt.Println("嗨客网(www.haicoder.net)") var myInt MyInt = 10 fmt.Println("IntAbs =", myInt.IntAbs()) myInt = -10 fmt.Println("IntAbs =", myInt.IntAbs()) }

程序运行后,控制台输出如下:

32_golang任意类型添加方法.png

首先,我们使用 type 关键字为内置类型 int 定义了一个别名 MyInt,接着,为 MyInt 添加了一个方法 IntAbs。

方法 IntAbs 返回 int 类型变量的绝对值,接着,我们在 main 函数里面调用 IntAbs 方法。

Go语言任意类型添加方法总结

Go 语言中除了可以为结构体添加方法,还可以为任意类型使用 type 定义别名,之后,就可以为别名添加方法。为任意类型添加方法语法:

type MyString string func (m MyString)IsLargeString()bool{ if len(m) > 10{ return true } return false }