Go总结:接口与方法集

Go学习第四篇文章已经学习了类型的方法集,分值接收者和指针接收者,而且值和指针变量都可以自由调用这些方法。但接口的变量却不能随意调用实现者的方法集,这里有文章。

接口的认识

Go语言中接口(interface)非常重要,他被用来约定一组行为,凡是具备这一组行为的类型,都可以看做是该接口的派生类型。利用这种特性,我们就能抽象出一类行为,将来功能的实现可以完全取决于具体的调用者。这种具备不同行为能力的特性叫多态。这也是Go语言中为数不多的典型的面向对象特性。他简单易懂功能强大,为Go的设计理念点赞。

Read More

Go总结:值接收者和指针接收者

Go语言没有复杂的class概念,严格来说不是面向对象的语言,她和C语言很像,是面向函数的;Go中函数用关键字func来声明。Go没有class但是有struct、interface,可以把他们理解成类型定义;问题来了,有一种用func声明的函数可以指定struct、interface类型的接收者,这种函数在Go语言中单独叫做方法;方法的接收者可以是一个类型的值也可以是一个类型的引用(指针)。

对Go语言数据类型的整体认识,可以参考以前的文章:Go学习(一)数据类型的本质

Read More

Systemd集成Golang程序

当想要在服务器上部署一个常驻程序时,不想让程序随着Terminal的退出而中止,你可以使用docker nohup supervisor 这些工具来实现。但是处于想学习Linux中Systemd的目的,我使用Systemd来实现把一个Golang程序作为一个系统服务

Read More

使用go语言实现一个守护进程

首先我们要知道
①什么是守护进程;?
②为什么要使用守护进程?

答案:
①所谓守护进程,就是不依赖任何终端的进程,也就是说如果你在当前这个终端启动了一个守护进程,然后把这个终端关了。如果是一个普通进程,而不是守护进程,那么它也会随着终端的关闭而终止。但是守护进程就比较牛逼了当你再次打开一个新的终端的时候,只要该守护进程的任务没有完成,那么你仍然可以看到它
②他有什么用呢?比如我正在做的服务端,你想象一下,你买了一台华为云服务器,然后远程连接以后,启动了你的服务进程,如果你的进程不是守护进程,那么在你关闭你终端的时候,你的服务进程也终止了,这可不是你想要的结果啊。所以说我们的服务器,特别是云服务器一定是以守护进程的方式在运行。

Read More