go自定义类型 (type MyInt int 和 type MyInt = int )

Go语言不采用传统的面向对象编程,而是通过自定义类型来实现代码的组织和扩展。自定义类型允许在原始类型的基础上创建新的类型,并为其添加方法,提高代码可读性。例如,可以定义一个`MyInt`类型来扩展整数的功能。自定义类型在与C交互、封装第三方库时尤为有用。然而,需要注意的是,不能在原始类型的包外定义其方法。本文通过实例展示了如何使用自定义类型及其好处。
摘要由CSDN通过智能技术生成

为什么需要自定义类型

go 不像 Java/C# 那样是面向对象的编程语言,它有自己独特的设计方式,自定义类型就属于其中之一,可以使代码更易于理解。
使用自定义类型可以在原始类型定义的包之外,创建新的类型,来实现自己所需要的方法。 注意:不能在原始类型所在的包外定义原始类型的方法

package myInt
type MyInt int
// 自定义类型,可以在int包外创建如下方法:
func (m MyInt) Println() {
	fmt.Println(m)
}
// 这种方式是不行的
func (m int) Println() {
	fmt.Println(m)
}

// 当然,我们也可以通过将原始类型传给函数,来达到相同的目的
func Println(m int) {
	fmt.Println(m)
}

声明

type 自定义类型 原始类型
例子:
type MyInt int
type MyIntSon MyInt

实际使用场景

  1. 通常在和c交互的时候,cgo中用的比较多,举个例子:type IPortableDevice C.IPortableDevice
  2. 在引用第三方包,并且希望为其中的原始类型添加方法或者隐藏原始类型方法的时候

type MyInt int 和 type MyInt = int 的区别

type MyInt int
自定义类型,可以在int包外创建如下方法:
func (m MyInt) Println() {
	fmt.Println(m)
}

type MyInt1 = int
// 编译不通过
func (m MyInt1) Println() {
	fmt.Println(m)
}
这个就相当于是int,不能在int包外定义方法。目前还没发现哪里用到了这种定义方式。

简单的小例子

package main
import (
	"fmt"
)
type app []string
func main() {
	data := app{"英雄联盟", "王者荣耀", "小垃圾"}
	data.Print()
}
func (data app) Print() {
	for _, v := range data {
		fmt.Println(v)
	}
}

所想要表述的意思就是:使用自定义类型,可以使我们的代码可读性更好,更易于扩展,代码结构更为清晰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值