教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Go Base

Go Base

发布时间:2022-02-03   编辑:jiaochengji.com
教程集为您提供Go Base等资源,欢迎您收藏本站,我们将为您提供最新的Go Base资源
<ul><li>https://golang.org/</li> <li>https://studygolang.com/</li> </ul>

Go又称为Golang,是Google的Robert Griesemer、Rob Pike、Ken Thompson开发的一种静态编译型语言,Go语法与C类似,功能具有内存安全、垃圾回收、结构心态、并发计算的编程语言。

Go起源于2007年,并在2009年正式对外发布,其目标是“兼容Python等动态语言的开发速度和C/C 等编译型语言的性能和安全性”。

Go又被称为“C类似语言”或“21世纪的C语言”,Go从C继承了相似的表达式语法、控制流程结构、基本数据类型、调用参数传值、指针等多种思想,还有C一直所看重的编译机器代码的运行效率,和现有操作系统的无缝适配。

Go没有类和继承的概念,因此和Java或C 看起来并不相同,但它通过接口实现了多态。Go具有清晰易懂的轻量级类型系统,在类型之间没有层级关系,因此Go是一门混合型语言。

<h2>编译型</h2>

Go和C一样是编译型静态语言,因此在运行Go程序前必须将其编译为二进制的可执行文件。

Go使用编译器来编译代码,编译器将源代码编译成二进制字节码格式,编译代码时编译器会检查错误、优化性能并输出不同平台上运行的二进制文件。

Go提供了<code>go build</code>或<code>go run</code>命令对Go程序进行编译

<ul><li> <code>go build</code>将Go源代码编译成二进制可执行文件</li> <li> <code>go run</code>将Go源代码编译后会直接运行,编译时会生成临时文件而非可执行文件,适合调试程序。</li> </ul><h2>语言特性</h2>

Go是一种静态强类型、编译型、并发型、具有垃圾回收机制的编程语言。

语法简单

就类型和规则而言Go与C99、C11相似之处颇多,因此又被称之为“NextC”。

并发模型

Go从根本上将一切都并行化,运行时使用Goroutine来运行一切,包括<code>main.main</code>入口函数。

Goroutine使用协程的方式来处理并发单元,运行时更深度的优化处理,使得并发编程极为简单,无需处理回调,无需关注线程切换。

Go搭配channel实现CSP模型,将并发单元之间的数据耦合拆解以各司其职,这对纠结于内存共享、锁粒度的开发人员是一种解脱。

内存分配

Go将一切并发化带来的问题是如何实现高并发下的内存分配和管理,Go选用<code>tcmalloc</code>高性能内存分配组件来解决这个问题。

垃圾回收

由于指针的存在回收内存不能做收缩处理,而Go的指针运算被阻止。

静态链接

Go静态链接只需编译后的可执行文件,无须附加其它即可部署。

标准库

Go标准库中值得称道的是<code>net/http</code>

工具链

Go无论是编译、格式化、错误检查、帮助文档、第三方包下载与更新都有与之对应的工具。

<h2>并发编程</h2>

早期CPU都是以单核形式顺序执行机器指令,C正是这种顺序编程语言的代表。顺序编程语言中的顺序指的是:所有指令都是以串行的方式执行,在相同时刻有且仅有一个CPU在顺序执行程序指令。

随着CPU发展单核提升CPU运行效率遇到瓶颈,随后出现多核CPU,相应地编程语言也朝向并行化发展。

Go从底层原生支持并发,无须第三方库。Go的并发基于<code>goroutine</code>,goroutine可理解为一种虚拟线程。Go运行时会参与调度goroutine,并将goroutine合理地分配给每个CPU以最大限度地提升CPU性能。

多个goroutine中会使用channel通道进行通信,通道是一种内置的数据结构,让用户在不同goroutine之间发送具有指定类型的消息。因此让编程更倾向于goroutine之间发送消息,而非让多个goroutine争夺同一个数据的使用权。


到此这篇关于“Go Base”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Go结构体继承指针和非指针区别(转换接口)
golang的继承机制
go读取toml文件配置文件
Go语言入门(十一) 接口编程
Go Base
Go语言环境安装
golang 网络编程(10)文本处理
使用golang进行kong限流插件开发
基于类型系统的面向对象编程语言Go
Golang以匿名组合的方式实现继承

[关闭]
~ ~