-
Go语言结构体内嵌模拟类的继承
所属栏目:[大数据] 日期:2020-12-16 热度:147
在面向对象思想中,实现对象关系需要使用“继承”特性。例如,人类不能飞行,鸟类可以飞行。人类和鸟类都可以继承自可行走类,但只有鸟类继承自飞行类。 面向对象的设计原则中也建议对象最好不要使用多重继承,有些面向对象语言从语言层面就禁止了多重继承,[详细]
-
Go语言为任意类型添加方法
所属栏目:[大数据] 日期:2020-12-16 热度:132
Go语言可以对任何类型添加方法,给一种类型添加方法就像给结构体添加方法一样,因为结构体也是一种类型。 为基本类型添加方法 在Go语言中,使用 type 关键字可以定义出新的自定义类型,之后就可以为自定义类型添加各种方法了。我们习惯于使用面向过程的方式判[详细]
-
Go语言解码未知结构的JSON数据
所属栏目:[大数据] 日期:2020-12-16 热度:82
Go语言内置的 encoding/json 标准库提供了对 JSON 数据进行编解码的功能。在实际开发过程中,有时候我们可能并不知道要解码的 JSON 数据结构是什么样子的,这个时候应该怎么处理呢? 如果要解码一段未知结构的 JSON,只需将这段 JSON 数据解码输出到一个空接[详细]
-
Go语言并发目录遍历
所属栏目:[大数据] 日期:2020-12-16 热度:111
在本节中,我们将构建一个程序,根据命令行指定的输入,报告一个或多个目录的磁盘使用情况,类似于 UNIX 的 du 命令。该程序大多数工作是由下面的 walkDir 函数完成,它使用 dirents 辅助函数来枚举目录中的条目,如下所示: // wakjDir 递归地遍历以 dir 为[详细]
-
Go语言依赖管理
所属栏目:[大数据] 日期:2020-12-16 热度:169
早期的Go语言被很多开发者所吐槽的一个问题就是没有依赖包的管理,不过随着版本的不断更迭,Go语言依赖管理方面也在不断的完善。 为什么需要依赖管理 最初的时候Go语言所依赖的所有的第三方包都放在 GOPATH 目录下面,这就导致了同一个包只能保存一个版本的代[详细]
-
Go语言HTTP客户端实现简述
所属栏目:[大数据] 日期:2020-12-16 热度:171
HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议,定义了客户端和服务端之间请求与响应的传输标准。 Go语言标准库内建提供了 net/http 包,涵盖了 HTTP 客户端和服务端的具体实现。使用 net/http 包,我们可以很方[详细]
-
Go语言DialTCP():网络通信
所属栏目:[大数据] 日期:2020-12-16 热度:173
实际上,在前面《Dial()函数》一节中介绍的 Dial() 函数其实是对 DialTCP()、DialUDP()、DialIP() 和 DialUnix() 的封装。我们也可以直接调用这些函数,它们的功能是一致的。这些函数的原型如下: func DialTCP(net string,laddr,raddr *TCPAddr) (c *TCPConn[详细]
-
Go语言文件读写
所属栏目:[大数据] 日期:2020-12-16 热度:52
本节将通过示例来为大家介绍Go语言中文件读写的相关操作。 读文件 在Go语言中,文件是使用指向 os.File 类型的指针来表示的,也叫做文件句柄。在前面章节使用到过标准输入 os.Stdin 和标准输出 os.Stdout 都是 *os.File 类型的。让我们来看看下面这个程序: p[详细]
-
Go语言和其它编程语言的对比
所属栏目:[大数据] 日期:2020-12-16 热度:99
在软件行业做过一段时间的人都知道,没有万能的编程语言,也没有万能开发框架,更没有万能的解决方案。任何新技术的产生都应该归功于一部分人对老旧技术的强烈不满。Go语言也不例外。比如,C语言的依赖管理、C++ 的垃圾回收、Java 笨重的类型系统和厚重的 Jav[详细]
-
Go语言RPC协议:远程过程调用
所属栏目:[大数据] 日期:2020-12-16 热度:62
RPC 协议构建于 TCP、UDP 或者是 HTTP 之上,允许开发人员直接调用另一台计算机上的程序,而开发人员无需额外地为这个调用过程编写网络通信相关代码,使得开发网络分布式类型的应用程序更加容易。 Go语言的标准库提供了 RPC 框架和不同的 RPC 实现。 什么是 R[详细]
-
Go语言服务端处理HTTP、HTTPS请求
所属栏目:[大数据] 日期:2020-12-16 热度:171
本节我们主要来介绍一下使用Go语言编写的 HTTP 服务端是如何处理 HTTP 和 HTTPS 请求的。 处理 HTTP 请求 使用 net/http 包提供的 http.ListenAndServe() 方法,可以对指定的地址进行监听,开启一个 HTTP,服务端该方法的原型如下: func ListenAndServe(addr[详细]
-
Go语言变量逃逸分析
所属栏目:[大数据] 日期:2020-12-16 热度:117
在讨论变量生命周期之前,先来了解下计算机组成里两个非常重要的概念:堆和栈。变量的生命周期我们将在下一节《变量生命周期》中为大家讲解。 什么是栈 栈(Stack)是一种拥有特殊规则的线性表数据结构。 1) 概念 栈只允许从线性表的同一端放入和取出数据,按[详细]
-
Json数据编码和解码
所属栏目:[大数据] 日期:2020-12-16 热度:155
数据结构要在网络中传输或保存到文件,就必须对其编码和解码;目前存在很多编码格式:JSON,XML,gob,Google 缓冲协议等等。Go语言支持所有这些编码格式。 结构可能包含二进制数据,如果将其作为文本打印,那么可读性是很差的。另外结构内部可能包含匿名字段[详细]
-
Go语言输出正弦函数(Sin)图像
所属栏目:[大数据] 日期:2020-12-16 热度:67
在Go语言中,正弦函数由 math 包提供,函数入口为 math.Sin,正弦函数的参数为 float64,返回值也是 float64。在使用正弦函数时,根据实际精度可以进行转换。 Go语言的标准库支持对图片像素进行访问,并且支持输出各种图片格式,如 JPEG、PNG、GIF 等。 首先[详细]
-
Go语言是怎么完成编译的
所属栏目:[大数据] 日期:2020-12-16 热度:196
Go语言是一门需要编译才能运行的编程语言,也就说代码在运行之前需要通过编译器生成二进制机器码,随后二进制文件才能在目标机器上运行,如果我们想要了解Go语言的实现原理,理解它的编译过程就是一个没有办法绕过的事情。 预备知识 想要深入了解Go语言的编译[详细]
-
Go语言使用事件系统实现事件的响应和处理
所属栏目:[大数据] 日期:2020-12-16 热度:169
Go语言可以将类型的方法与普通函数视为一个概念,从而简化方法和函数混合作为回调类型时的复杂性。这个特性和 C# 中的代理(delegate)类似,调用者无须关心谁来支持调用,系统会自动处理是否调用普通函数或类型的方法。 本节中,首先将用简单的例子了解Go语[详细]
-
Go语言缩进排序
所属栏目:[大数据] 日期:2020-12-16 热度:89
本节将通过实例为大家演示如何将字符串按照等级(缩进级别)进行排序,完整代码如下所示。 package mainimport ( "fmt" "sort" "strings")var original = []string{ "Nonmetals"," Hydrogen"," Carbon"," Nitrogen"," Oxygen","Inner Transitionals"," Lantha[详细]
-
Go语言TCP协议
所属栏目:[大数据] 日期:2020-12-16 热度:162
TCP 是机器与机器间传输信息的基础协议,本节我们就来为大家介绍一下 TCP 协议。 TCP 协议简介 TCP 传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP 协议主要是为了在不可靠的互联网络上提供可靠的[详细]
-
Go语言从INI配置文件中读取需要的值
所属栏目:[大数据] 日期:2020-12-16 热度:115
INI 文件是 Initialization File 的缩写,即初始化文件,是 Windows 的系统配置文件所采用的存储格式,统管 Windows 的各项配置。INI 文件格式由节(section)和键(key)构成,一般用于操作系统、虚幻游戏引擎、GIT 版本管理中,这种配置文件的文件扩展名为[详细]
-
如何设计优雅的RPC接口
所属栏目:[大数据] 日期:2020-12-16 热度:83
RPC 是一种方便的网络通信编程模型,由于和编程语言的高度结合,大大减少了处理网络数据的复杂度,让代码可读性也有可观的提高。但是 RPC 本身的构成却比较复杂,由于受到编程语言、网络模型、使用习惯的约束,有大量的妥协和取舍之处。 RPC 框架的讨论一直是[详细]
-
Go语言内存管理简述
所属栏目:[大数据] 日期:2020-12-16 热度:188
内存管理是非常重要的一个话题。关于编程语言是否应该支持垃圾回收就有个搞笑的争论,一派人认为,内存管理太重要了,而手动管理麻烦且容易出错,所以我们应该交给机器去管理。另一派人则认为,内存管理太重要了!所以如果交给机器管理我不能放心。争论归争论[详细]
-
Go语言接口的nil判断
所属栏目:[大数据] 日期:2020-12-16 热度:99
nil 在 Go语言中只能被赋值给指针和接口。接口在底层的实现有两个部分:type 和 data。在源码中,显式地将 nil 赋值给接口时,接口的 type 和 data 都将为 nil。此时,接口与 nil 值判断是相等的。但如果将一个带有类型的 nil 赋值给接口时,只有 data 为 nil[详细]
-
Go语言反射——性能和灵活性的双刃剑
所属栏目:[大数据] 日期:2020-12-16 热度:65
现在的一些流行设计思想需要建立在反射基础上,如控制反转(Inversion Of Control,IOC)和依赖注入(Dependency Injection,DI)。Go语言中非常有名的 Web 框架 martini(https://github.com/go-martini/martini)就是通过依赖注入技术进行中间件的实现,例[详细]
-
Go语言工厂模式自动注册——管理多个包的结构体
所属栏目:[大数据] 日期:2020-12-16 热度:118
本例利用包的 init 特性,将 cls1 和 cls2 两个包注册到工厂,使用字符串创建这两个注册好的结构实例。 完整代码的结构如下: . └── src ??? └── chapter08 ??????? └── clsfactory ??????????? ├── main.go ??????????? └── base ? ? ? ? ? ?[详细]
-
Go语言使用匿名结构体解析JSON数据
所属栏目:[大数据] 日期:2020-12-16 热度:167
JavaScript 对象表示法(JSON)是一种用于发送和接收结构化信息的标准协议。在类似的协议中,JSON 并不是唯一的一个标准协议。 XML、ASN.1 和 Google 的 Protocol Buffers 都是类似的协议,并且有各自的特色,但是由于简洁性、可读性和流行程度等原因,JSON[详细]
