首页 > 其他分享 >什么是Go语言?

什么是Go语言?

时间:2023-02-02 10:33:16浏览次数:34  
标签:语言 什么 平台 编译 开发 Go 区块

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!

作者|慕课网精英讲师 Codey

1. Go 语言的出身

Go(又称 golang)是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。

罗伯特·格里泽默(Robert Griesemer),罗布·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于 2007 年 9 月开始设计 Go,后来 Ian Lance Taylor、Russ Cox 加入项目。Go 是基于 Inferno 操作系统所开发的,于 2009 年 11 月正式宣布推出,成为开放源代码项目,并在 Linux 及 Mac OS X 平台上进行了实现,后来追加了 Windows 系统下的实现。在 2016 年,Go 被软件评价公司 TIOBE 选为“TIOBE 2016 年最佳语言”。 目前,Go 已经开始每半年发布一个二级版本(即从 a.x 升级到 a.y)。

什么是Go语言?_区块链

2. Go 语言的特点

  • Go 语言可以直接编译成主流操作系统支持的可执行文件,部署服务只需要扔一个可执行文件上去直接运行就好了;
  • Go 语言有不输于动态语言的丰富静态库。归功于强大的官方团队和社区,目前 Go 语言几乎什么都可以开发;
  • Go 语言天生支持并发,这是个近乎无敌的设定;
  • Go 语言具有自动垃圾回收机制;
  • Go 语言简单易学,因为它几乎支持常用的语言的所有特性:继承、封装等等;
  • Go 语言内嵌支持 C 语言,你甚至可以直接在 Go 语言里面写 C 语言代码;
  • Go 语言支持交叉编译,你可以在 Windows 环境中编译任何平台的 Go 可执行程序。但是需要注意的是,如果你在 Go 程序中写了 C 语言,你就不能只用交叉编译的特性了,所谓鱼和熊掌不可兼得嘛。

3. Go 语言的使用场景

  • 服务器编程;
  • 分布式系统,数据库代理器;
  • 网络编程,这一块目前应用最广,包括 Web 应用、API 应用、下载应用;
  • 内存数据库,前一段时间 Google 开发的 groupcache,couchbase 的部分组件;
  • 云平台,目前国外很多云平台在采用 Go 开发,CloudFoundy 的部分组件,前 VMare 的技术总监自己出来搞的apcera 云平台;
  • 区块链技术研发。

4. Go 语言开发的经典项目

  • Docker:基于 lxc 的一个虚拟打包工具,能够实现 PAAS 平台的组建。
  • Hyperledger fabric:市面上最流行的两大区块链平台之一。

5. 与其他开发语言对比

Go 语言为什么能在现有的成熟语言中脱颖而出呢?这要归功于它比 Java 还简洁的语法,接近 C 语言的编译执行速度,甚至还有不亚于脚本语言的开发速度。在目前最要求效率的当下,它无疑会是一匹黑马。但是和其它语言比起来劣势也很明显,因为它出现的时间短,学习资料少,第三方支持库虽然多,但是比起 Java 以及 C 语言还是远远不够。Go 语言不支持泛型,对于学习 Java 的开发人员来说一开始会很不适应。

6. 为什么要学习 Go 语言

综上所述, Go 语言出身名门,血统纯正。从学习难度上来说语法简单,功能强大。从可扩展性上来说第三方库众多,标准库强大稳定。性能上更是拥有无可挑剔的自动调度线程。Go 语言完美地协调了运行效率和开发效率之间的关系。而且 Go 语言目前已经广泛应用于虚拟容器、区块链等传统的和高精尖的产业中,将来会有巨大的前景。不管是国内还是国外,对 Go 语言的程序员的需求只会越来越多。

7. Go 语言的代码

接下来我们来看看 Go 语言怎么用代码来和你 say hello。

package main

import "fmt"

func main() {
fmt.Println("Hello Codey !")
}
代码块1234567

上述代码的输出结果就是:Hello Codey !

8. 小结

Go 语言目前的用途主要是在服务器和区块链上。但是它的功能不止于此,需要我们多去开发多去使用,使得 Go 语言的生态更加完整,更加强大。

欢迎关注「慕课网」,发现更多IT圈优质内容,分享干货知识,帮助你成为更好的程序员!

标签:语言,什么,平台,编译,开发,Go,区块
From: https://blog.51cto.com/u_15771948/6033059

相关文章

  • 究竟什么是Shadow DOM?
    shadowdom是什么?顾名思义,shadowdom直译的话就是影子dom,但我更愿把它理解为DOM中的DOM。因为他能够为Web组件中的DOM和CSS提供了封装,实际上是在浏览器渲染文档的时候......
  • 详解结构体--C语言
    我们平时使用的C语言类型类型主要是整数类型、浮点数类型以及指针类型,你是否想过我们该如何将一串不同类型的数据整合起来,实现封装?事实上,C语言也提供给我们一些自定义类型,......
  • 有什么相见恨晚的英语听力练习方法?
    本文來自知乎 原文鏈接作者:黄七公终身学习者B站ID:黄七公说5,448人赞同了该回答曾经的我真的是听力渣渣,通过一个月的刻意训练(内外相合的训练),我的英语听力水平产生了巨......
  • 数据仓库、数据湖、湖仓一体,究竟有什么区别
    数据,已经成为了企业的生命线与核心资产,数据管理和数据分析成为非常重要的应用领域。出于对数据管理领域的关注,不同行业也逐步提升了对数据存储、数据治理及数据分析能力的......
  • 爬google podcast 笔记
    问题1https://stackoverflow.com/questions/57217924/pyppeteer-errors-browsererror-browser-closed-unexpectedlyexportno_proxy=localhost,127.0.0.1......
  • Golang入门第一天
    变量的使用自动推导类型多重赋值和匿名变量常量的使用多重变量或常量的定义iota枚举bool布尔类型浮点型字符类型字符串类型字符类型和字符串类型的区别复数类......
  • R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告|附代码数据
    原文链接:http://tecdat.cn/?p=6592我们被要求在本周提供一个报告,该报告将结合pca,t-SNE算法等数值方法降低维度有两个主要用例:数据探索和机器学习。它对于数据探索很有用......
  • R语言使用虚拟变量Dummy Variables)回归分析工资影响因素|附代码数据
    全文链接:http://tecdat.cn/?p=23170 我们被要求在本周提供一个报告,该报告将结合虚拟变量,回归等数值方法在本文中,本文与以下两个问题有关。你应该如何添加虚拟变量?你应该......
  • gorm启动
    最近在研究gorm,一起来看看吧!首先我们在创建一个数据库。我是在MySQL上创建了一个名叫gorm的数据库,如下图所示:然后,我们尝试在项目中与这个数据库取得联系。在GoLand上......
  • R语言使用虚拟变量(Dummy Variables) 回归分析工资影响因素|附代码数据
    全文链接:http://tecdat.cn/?p=23170 我们被要求在本周提供一个报告,该报告将结合回归,虚拟变量等数值方法在本文中,本文与以下两个问题有关。你应该如何添加虚拟变量?你应该......