Jquery中文网 www.jquerycn.cn
Jquery中文网 >  后端编程  >  Go语言  >  正文 Go语言编程(十一)之类型系统

Go语言编程(十一)之类型系统

发布时间:2021-04-14   编辑:www.jquerycn.cn
jquery中文网为您提供Go语言编程(十一)之类型系统等资源,欢迎您收藏本站,我们将为您提供最新的Go语言编程(十一)之类型系统资源

类型系统 type system

   类型系统是指一个语言的类型体系结构。一个典型的类型系统通常包含如下基本内容:

   基础类型,如byte、int、bool、float

   复合类型,如数组、结构体、指针等

   可以指向任意对象的类型(Any类型)

   值语义和引用语义

   面向对象,即所有具备面向对象特征(比如成员方法)的类型

   接口

   类型系统描述的是这些内容在一个语言中如何被关联。

为类型添加方法

   在Go语言中,你可以给任意类型(包括内置类型,但不包括指针类型)添加相应的方法,例如

type Integer int
func (a Integer) Less(b Integer) bool {
    return a < b
}

   在这个例子中,我们定义了一个新类型Integer,它和int没有本质不同,只是它为内置的int类型增加了一个新方法Less()。

   这样实现了Integer后,就可以让整型像一个普通的类一样使用:

func main() {
    var a Integer = 1
    if a.Less(2) {
        fmt.Println(a, "Less 2")
    }
}
值语义和引用语义

值语义和引用语义的差别在于赋值,比如下面的例子:

b = a

b.Modify()

如果b的修改不会影响a的值,那么此类型属于值类型。如果会影响a的值,那么此类型是引用类型。

结构体

Go语言的结构体(struct)和其他语言的类(class)有同等的地位,但Go语言放弃了包括继承在内的大量面向对象特性,只保留了组合这个最基础的特性。

上面提到过,所有的Go语言类型(指针类型除外)都可以有自己的方法。在这个背景下,Go语言的结构体只是很普通的复合类型,例如我们要定义一个矩形类型:

type Rect struct {
    x, y          float64
    width, height float64
}

然后我们定义成员方法Area()来计算矩形的面积:

func (r *Rect) Area() float64 {
    return r.width * r.height
}



到此这篇关于“Go语言编程(十一)之类型系统”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Go语言发展历史、核心、特性及学习路线
想系统学习GO语言(Golang
Go 语言到底适合干什么?
go比php好在哪里
go语言和php的区别是什么?
go语言和python哪个难
go语言核心编程_Go语言核心编程李文塔
Go语言学习3----Go语言特色
Go 语言教程
Go 语言十年而立,Go2 蓄势待发

上一篇:Go Everyday 下一篇:go基础算法思想
[关闭]