Golang 入门 : Go语言介绍
简介
Go 语言又称 Golang,由 Google 公司于 2009 年发布,近几年伴随着云计算、微服务、分布式的发展而迅速崛起,跻身主流编程语言之列,和 Java 类似,它是一门静态的、强类型的、编译型编程语言,为并发而生,所以天生适用于并发编程(网络编程)。
目前 Go 语言支持 Windows、Linux 等多个平台,也可以直接在 Android 和 iOS 等移动端执行,从业务角度来看,Go 语言在云计算、微服务、大数据、区块链、物联网、人工智能等领域都有广泛的应用。所以当下学习正当时。
是谁创造了Go语言

Go语言之父们(从左到右分别是Robert Griesemer、Rob Pike和Ken Thompson)
Ken Thompson C语言 Unix 和 Plan9 的创始人之一,20世纪70年代设计并实现了 Unix 操作系统,还和 Rob Pike 设计了UTF-8编码。
Rob Pike 不但设计了 UTF-8 编码,还开发了分布式多用户操作系统 Plan9 Inferno 操作系统和 Limbo 编程语言。
Robert Griesemer 就职于 Google,负责 Chrome 浏览器中 Google V8 引擎的代码。
那天下午,在谷歌山景城总部的那间办公室里,罗伯·派克启动了一个 C++ 工程的编译构建。按照以往的经验判断,这次构建大约需要一个小时。利用这段时间,罗伯·派克和罗伯特·格瑞史莫、肯·汤普森坐在一处,交换了关于设计一门新编程语言的想法。
之所以有这种想法,是因为当时的谷歌内部主要使用 C++ 语言构建各种系统,但 C++ 的巨大复杂性、编译构建速度慢以及在编写服务端程序时对并发支持的不足,让三位大佬觉得十分不便,他们就想着设计一门新的语言。在他们的初步构想中,这门新语言应该是能够给程序员带来快乐、匹配未来硬件发展趋势并适合用来开发谷歌内部大规模网络服务程序的。
他们于2007年开始设计Go语言,于2009年正式对外发布。Go语言即具备python等动态语言的开发速度,又拥有C/C++等编译型语言的性能与安全性。又被称作21世纪的C语言,不但能够访问底层操作系统还提供了强大的网络编程和并发编程,分布式编程。
在 Go 语言项目开源后,Go 语言也迎来了自己的“吉祥物”,是一只由罗伯·派克夫人芮妮·弗伦奇(Renee French)设计的地鼠,从此地鼠(gopher)也就成为了世界各地 Go 程序员的象征,Go 程序员也被昵称为 Gopher 。

Go语言特性
开放源代码 Go本身就是用Go语言编写的。
快速 天下武功唯快不破,选择一门快速的语言例如C语言,却难以开发,编译速度依赖性运行时错误都非常多,要么有些语言依赖关系太多,最重要的一个就是解释器本身,例如Java语言需要虚拟机才能运行代码,javascript和node.js维护起来就是噩梦了。尤其是遇到回调。Go语言一开始设计就考虑到快速编译。他能像其他解释性语言一样,你不会注意他正在编译。
安全 作为强类型静态语言,并自带垃圾回收机制所以也具有安全性。因为Go的语言设计拥有像C语言那样操作指针,但是他通常不会像C语言那样危险,因为他内存是由Go自身进行管理的。
代码简洁 Go语言不仅在编译上快速,而且代码简洁明了,易于阅读。
已编译 不需要虚拟机支持,可直接编译成机器代码,编译后的文件也不需要依赖其他包文件。
跨平台 Go语言拥有的交叉编译,可以轻松编译到指定的平台上运行:例如OS X、Linux、Windows、Arm或者其他平台。
自动垃圾回收 程序在运行过程中的垃圾回收工作一般由Go运行时系统全权负责。不过,Go也允许我们对此项工作进行干预。
内置包 Go语言拥有几乎所有你能用到的标准库。例如http网络协议包,json解析包,time时间包等等。这种碎片化的东西在一个系统中占用大部分时间。
完整的构建工具 Go语言出色的内置命令工具,它自带了很多强大的命令和工具,通过它们,可以很轻松地完成Go程序的获取、编译、测试、安装、运行、分析等一系列工作。例如自动设置代码格式,检查代码存在的问题,go fmt命令每次保存后自动格式化代码。
原生的并发编程 并发在Go语言中属于一大亮点,并发的最小单元是协程,是一个微线程却有别于线程。协程由Go语言自身创建,并且由Go语言自身的运行时runtime调度。在其他语言中需要通过线程来解决的问题。一台电脑能够开启的线程数量是有限制的。在Go语言中可以很轻松开启一个协程来处理,因为协程很微型,不会占用电脑资源。一台电脑可以轻松开启成千上万个协程,在这个大数据的时代,能够处理大流量的数据能力的语言,并且能够简单快速开放的语言,非Go语言莫属了。
哪些公司都在使用Go语言
Go社区中至少有100万名Go程序员。越来越多的公司都拥抱Go语言,最著名的使用Go语言的公司Google,Docker,Dropbox,Heroku,Uber等。国内的比如滴滴,腾讯,阿里,京东商城,爱奇艺,小米,360,美团,驴妈妈旅游网,斗鱼直播,探探 等等 都在使用Go语言。包括哔哩哔哩的后台也从java转向了Go 可见Go语言的受欢迎程度。你能想到的现代云计算基础设施软件的大部分流行和可靠的作品,都是用 Go 编写的,比如:Docker、Kubernetes、Prometheus、Ethereum(以太坊)、Istio、CockroachDB、InfluxDB、Terraform、Etcd、Consul 等等。当然,这个列表还在持续增加,可见 Go 语言的影响力已经十分强大。
Golang 入门 : Go语言介绍的更多相关文章
- 【个人笔记】002-PHP基础-01-PHP快速入门-02-PHP语言相关介绍输
002-PHP基础-01-PHP快速入门 02-PHP语言相关介绍 1.PHP是什么 Hypertext Preprocessor超文本预处理器 是一种通用开源脚本语言 Personal Home P ...
- Java程序员的Golang入门指南(下)
Java程序员的Golang入门指南(下) 4.高级特性 上面介绍的只是Golang的基本语法和特性,尽管像控制语句的条件不用圆括号.函数多返回值.switch-case默认break.函数闭包.集合 ...
- Golang 入门 : 竞争条件
笔者在前文<Golang 入门 : 理解并发与并行>和<Golang 入门 : goroutine(协程)>中介绍了 Golang 对并发的原生支持以及 goroutine 的 ...
- Golang 入门 : goroutine(协程)
在操作系统中,执行体是个抽象的概念.与之对应的实体有进程.线程以及协程(coroutine).协程也叫轻量级的线程,与传统的进程和线程相比,协程的最大特点是 "轻"!可以轻松创建上 ...
- Golang 入门 : channel(通道)
笔者在<Golang 入门 : 竞争条件>一文中介绍了 Golang 并发编程中需要面对的竞争条件.本文我们就介绍如何使用 Golang 提供的 channel(通道) 消除竞争条件. C ...
- Golang入门(3):一天学完GO的进阶语法
摘要 在上一篇文章中,我们聊了聊Golang中的一些基础的语法,如变量的定义.条件语句.循环语句等等.他们和其他语言很相似,我们只需要看一看它们之间的区别,就差不多可以掌握了,所以作者称它们为&quo ...
- Golang入门(2):一天学完GO的基本语法
摘要 在配置好环境之后,要研究的就是这个语言的语法了.在这篇文章中,作者希望可以简单的介绍一下Golang的各种语法,并与C和Java作一些简单的对比以加深记忆.因为这篇文章只是入门Golang的第二 ...
- Golang入门(1):安装与配置环境变量的意义
摘要 在几年前学习Java的时候,环境的配置就会劝退一部分的初学者.而对于Golang来说,也需要从环境的配置开始学起.这一篇文章将从如何安装Golang开始讲起,随后将会提到Golang中的环境变量 ...
- Java程序员快速入门Go语言
这篇文章帮助Java程序员快速入门Go语言. 转载至 开源中国社区. http://www.oschina.net 本文将以一个有代表性的例子为开始,以此让Java程序员对Go语言有个初步认识,随后将 ...
- Java程序员的Golang入门指南(上)
Java程序员的Golang入门指南 1.序言 Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis.类Evernote的云笔记leanote等. 1.1 为什么要学习 如 ...
随机推荐
- Wasm在即时通讯IM场景下的Web端应用性能提升初探
本文由得物技术WWQ分享,原题"基于IM场景下的Wasm初探:提升Web应用性能",下文进行了排版和内容优化. 1.什么是Wasm Wasm,全称 WebAssembly,官网描述 ...
- B站千万级长连接实时消息系统的架构设计与实践
本文由哔哩哔哩资深开发工程师黄山成分享,原题"千万长连消息系统",本文进行了排版和内容优化等. 1.引言 在当今数字娱乐时代,弹幕已经成为直播平台上不可或缺的互动元素之一. 用户通 ...
- 长连接网关技术专题(十一):揭秘腾讯公网TGW网关系统的技术架构演进
本文由腾讯技术团队peter分享,原题"腾讯网关TGW架构演进之路",下文进行了排版和内容优化等. 1.引言 TGW全称Tencent Gateway,是一套实现多网统一接入,支持 ...
- 给 Python 添加进度条 | 给小白的 tqdm 精炼实例!
给 Python 添加进度条 | 给小白的 tqdm 精炼实例! 假设我们有一个循环: for i in range(100): do_something() # 这里做某些事 假设 do_somet ...
- 2025-01-04:不包含相邻元素的子序列的最大和。用go语言,给定一个整数数组 nums 和一个由二维数组 queries 组成的查询列表,其中每个查询的格式为 queries[i] = [pos
2025-01-04:不包含相邻元素的子序列的最大和.用go语言,给定一个整数数组 nums 和一个由二维数组 queries 组成的查询列表,其中每个查询的格式为 queries[i] = [pos ...
- get Toutiao.com news list
.get cookie with your browser then can do using System; using System.Collections.Generic; using Syst ...
- 领域驱动设计实战-DDD
--------------------- 领域驱动(DDD,Domain Driven Design)为软件设计提供了一套完整的理论指导和落地实践,通过战略设计和战术设计,将技术实现与业务逻辑分离, ...
- e-prime2.0 安装
先卸载之前的 卸载 1.点开之前安装的文件.exe 2.选择remove,即卸载 打开注册表 1.开始-运行:输入regedit 2.然后找到并删除注册表中: HKEY_CURRENT_USER\So ...
- DVWA靶场XSS漏洞通关教程及源码审计
XSS漏洞 XSS(跨站脚本攻击,Cross-Site Scripting)是一种安全漏洞,通常发生在Web应用程序中.XSS漏洞允许攻击者把恶意脚本注入到内容中, 这会在其他用户的浏览器中执行.这种 ...
- 腾讯云 TI 平台部署与调用DeepSeek-R1大模型的实战指南
今天我们将继续探讨如何部署一个私有化的 DeepSeek-R1 大模型,具体的部署过程我们将利用腾讯云的 TI 平台进行操作.当前,腾讯云 TI 平台为用户提供了免费体验的满血版 DeepSeek-R ...