vlambda博客
学习文章列表

Go语言基础教程-基本数据类型和函数

Go语言简介

      Go语言是google开发的一门语言,和C很像。具备操作底层的能力但是又不用担心内存问题。Go目前在国内越来流行,尤其是云原生领域。本篇会介绍go语言里面的一些基本概念。

基本数据类型

     数据类型是编程语言对现实世界的抽象。go语言支持的基本数据类型有:整数,浮点数,字符串等。

对于整数,不仅有int还有int8,int 16等

Go语言基础教程-基本数据类型和函数

除了整数,还有小数,字符串等。举个例子:

Go语言基础教程-基本数据类型和函数

数组,切片和结构体

     对于一类相同的数据,我们可以使用数组来保存。在go里面,数组是这样声明的:

Go语言基础教程-基本数据类型和函数

声明一个大小为4的数组。可以使用下标访问。但是很多时候,我们并不知道初始化的容量是多少,这时候就需要声明一个切片:slice。其实方式很简单,和数组基本一致,就是不指定大小就是个切片。

Go语言基础教程-基本数据类型和函数

这时候往切片里面添加数据就要使用append方法了。切片还有许多其他的用法,想了解的可以继续了解。很多时候,我们需要一个结构表示对某个事物的抽象,比如一个人,有name,age那么怎么表示呢?这时候可以用结构体:

Go语言基础教程-基本数据类型和函数

这个概念和很多其他编程语言里面的类很像。一个结构体是对某个实体的抽象。这里也展示了go语言的第二种赋值方法::= 赋值。这种赋值不用指定类型,编译器会自己推导。

函数

     函数这个概念几乎存在于所有的编程语言。函数是对一个功能的封装。在go语言里面使用func关键字声明一个函数:

Go语言基础教程-基本数据类型和函数

比如这个。go里面的函数可以返回多个值:

Go语言基础教程-基本数据类型和函数

函数和结构体

     刚才说了结构体其实是对现实中的某个实体的抽象。这些实体不仅仅有属性,还有行为。结构体其实也可以定义函数。比如刚才的例子,Person可以说话:

Go语言基础教程-基本数据类型和函数

这样就可以给某个结构体定义一个行为。这个其实和Java或者C++很像,了解的同学知道Java类里面有成员函数的概念。这个确实就是成员函数,但是这个成员函数的声明是隐式的。其实Go语言我觉得更多的是函数式编程,对于OOP的也是可以支持的,但是是一种隐式的支持。与这个类似的还有接口

接口Interface

     go语言现在被大家诟病最多的有个点就是没有泛型。其实Go语言的interface类型,有着泛型的思想。Interface可以表示一种未知的数据类型,同时他也有接口的语意。这句话听起来有点奇怪。。下面举个例子说明:

Go语言基础教程-基本数据类型和函数

比如我有一个接口是ReadFile,里面有两个函数:read和readAll。用来读取文件。然后声明一个结构体,用来实现这个接口。其实你没有看到任务明显的实现操作。这里有一个强制,当你实现了接口中的一个函数,就必须实现所有函数,要不然不能被看作是接口的实现。当实现了接口的所有函数之后,就可以进行赋值操作。所以这里的实现操作,其实也是一种隐式的实现。

      接口不仅仅可以作为一些行为的公共抽象,还可以做泛型。比如我们要解析某个json数据:

Go语言基础教程-基本数据类型和函数

如果你一开始就知道它长这样,那就简单了。直接定义对应的就够解析:

但是如果不知道呢?其实可以这样解析:

这里的interface就是有点泛型的意思了。

  总结

     好吧,今天的介绍就到这里。下一节我们准备介绍常用的数据机构,比如map,以及go里面鼎鼎大名的的goroutine,channel等。