Go 是一种开源编程语言,可以轻松构建简单,可靠,高效的软件.

摘录自 github: https://github.com/golang/go,其中官网(国外): https://golang.org 和官网(国内): https://golang.google.cn/

GoGoogle 公司推出的静态强类型,编译型,并发型,并具有垃圾回收功能的开源编程语言,最初由 Robert Griesemer , Rob Pike ,Ken Thompson 三人主持开发,后来陆续加入其他开发者,最终于 2009 年 11 月正式开源.

创始人都是大神

Go 的三位主要创始人分别是: 罗伯特·格瑞史莫(Robert Griesemer),和肯·汤普逊(Ken Thompson)

  • 罗伯特·格瑞史莫(Robert Griesemer)

JS V8 引擎,Chubby ,Java HotSpot 虚拟机,Sawzall 语言和 Strongtalk 系统

github: https://github.com/griesemer

  • 罗勃·派克(Rob Pike)

Plan 9 操作系统和UTF-8 编码

github: https://github.com/robpike

  • 肯·汤普逊(Ken Thompson)

UNIX 操作系统 ,Plan 9 操作系统,B 语言,UTF-8 编码

github: https://github.com/ken

如此厉害的三位大牛合作创作的 Go 语言还能差到哪里去呢?

吉祥物也很可爱

原来的 logo 是一只可爱的囊地鼠,英文名叫 gopher.

新的 logo 是现代化图标,代表更快更强,体现速度和效率.

网上流传甚广的一组很萌很可爱的吉祥物,并附上 github 链接: https://github.com/tenntenn/gopher-stickers

体验 go 语言魅力

  • 案例一

fmt.Println("Hello, 世界") : 输出字符串并换行

package main

import "fmt"

func main() {
fmt.Println("Hello, 世界")
}

  • 案例二

a, b = b, a : 互换变量ab 的值,而其他语言一般都需要引入临时变量.

package main

import "fmt"

func main() {
var a = 3
var b = 4
fmt.Println(a, b)
a, b = b, a
fmt.Println(a, b)
}

  • 案例三

go + chan 关键字轻松完成并行计算

package main

import (
"fmt"
"math"
) func main() {
fmt.Println(pi(5000))
} func pi(n int) float64 {
ch := make(chan float64)
for k := 0; k <= n; k++ {
go term(ch, float64(k))
}
f := 0.0
for k := 0; k <= n; k++ {
f += <-ch
}
return f
} func term(ch chan float64, k float64) {
ch <- 4 * math.Pow(-1, k) / (2*k + 1)
}

到底好用不好用

Go 语言是云计算时代的 C 语言也称为21 世纪的 C 语言,由此可见,Go 的地位非同一般.

Go 语言的诞生是为了提高生产效率,专门对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全,支持并行进程.

  • 运行效率高,开发高效,部署简单.

运行效率高是因为编译性语言与解释性语言相比,开发高效是语法简单,部署简单是直接部署编译后的程序.

  • 语言层面支持并发,易于利用多核实现并发.

不同于 php,只需要 go 配合 channel 即可完成进程或线程所做的工作.

  • 内置 runtime 并支持垃圾回收

类似 Java 虚拟机支持垃圾回收,不必手动进行内存管理.

  • 简单易学,丰富的标准库,强大的网络库.

学习成本低,语法简单但表达能力强,支持函数式编程,面向对象编程等多种编程范式.

  • 内置强大的工具(gofmt),跨平台编译,内嵌C支持.

不同的人有不同的代码风格,可转化统一风格

志同道合有几人

  • Docker : 是为开发人员构建和运行应用程序而构建的平台

https://www.docker.com/

  • Kubernetes : 自动化容器部署,扩展,管理的应用程序

https://kubernetes.io/

  • Etcd : 分布式键值对存储系统

https://etcd.io/

  • baidu-netdisk-downloaderx : 一款图形界面的百度网盘不限速下载器,支持 Windows , LinuxMac

https://github.com/b3log/baidu-netdisk-downloaderx

  • pan-light : 百度网盘不限速客户端, golang + qt5, 跨平台图形界面

https://github.com/peterq/pan-light

自学技术哪家强

自问自答解疑惑

  • gogolang 是什么关系?

gogolang 的简称,golanggo language 的缩写,即 go 语言.

  • go 的常用 IDE 有哪些?

独立集成工具主要有 LiteIDEGoLand 两种,但是常见 IDE 基本上均提供各种 Go 插件,支持 Windows ,MacOSLinux 常见操作系统.

  • go 的常见 Web 开发框架有哪些?

Beego ,IrisGin 等,国人用的比较多是 Beego,目前资料也比较齐全.

无总结不成文章

GoGoogle 出品的开源编程语言,出身名门注定不凡,并且拥有十分活跃的社区环境.

国内使用 Go 语言比较早的公司主要有七牛云和 beego,其中七牛云主要是云存储方面的业务,这也正是 Go 支持高并发分布式的特色,而 BeegoGoWeb 开发框架,支持 MVC 编程模型,不愧是国人开发深受国人喜爱.

同时,今年著名的 bilibili 源代码泄露事件也让我们看到了 Go 的身影,侧面说明了 Go 越来越流行,不愧是 21 世纪的 C 语言啊!

好了,暂时没有别的废话了,本文到此为止,下一章将开始介绍 Go 语言的环境搭建与 IDE 的基本配置,敬请期待.

go 学习笔记之初识 go 语言的更多相关文章

  1. Go学习笔记:初识Go语言

    Go语言简介 Go语言是Google(谷歌)公司开发的一款静态型.编译型并自带垃圾回收机制和并发的编程语言. Go语言的风格类似于C语言.其语法在C语言的基础上进行了大幅的简化,去掉了不需要的表达式括 ...

  2. Storm学习笔记 - Storm初识

    Storm学习笔记 - Storm初识 1. Strom是什么? Storm是一个开源免费的分布式计算框架,可以实时处理大量的数据流. 2. Storm的特点 高性能,低延迟. 分布式:可解决数据量大 ...

  3. golang学习笔记18 用go语言编写移动端sdk和app开发gomobile

    golang学习笔记18 用go语言编写移动端sdk和app开发gomobile gomobile的使用-用go语言编写移动端sdk和app开发https://blog.csdn.net/u01249 ...

  4. LevelDB学习笔记 (1):初识LevelDB

    LevelDB学习笔记 (1):初识LevelDB 1. 写在前面 1.1 什么是levelDB LevelDB就是一个由Google开源的高效的单机Key/Value存储系统,该存储系统提供了Key ...

  5. Java学习笔记心得——初识Java

    初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开 ...

  6. cips2016+学习笔记︱简述常见的语言表示模型(词嵌入、句表示、篇章表示)

    在cips2016出来之前,笔者也总结过种类繁多,类似词向量的内容,自然语言处理︱简述四大类文本分析中的"词向量"(文本词特征提取)事实证明,笔者当时所写的基本跟CIPS2016一 ...

  7. Haskell语言学习笔记(88)语言扩展(1)

    ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Ex ...

  8. Oracle学习笔记之四,SQL语言入门

    1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...

  9. sqlite学习笔记7:C语言中使用sqlite之打开数据库

    数据库的基本内容前面都已经说得差点儿相同了.接下看看如何在C语言中使用sqlite. 一 接口 sqlite3_open(const char *filename, sqlite3 **ppDb) 打 ...

随机推荐

  1. CRS-2800: Cannot start resource 'ora.asm' as it is already in the INTERMEDIATE state on server ‘RAC02’

    在安装ORACLE RAC的Grid Infrastructure时,在节点1运行/u01/app/11.2.0/grid/root.sh正常,当在节点2运行/u01/app/11.2.0/grid/ ...

  2. 重写QLineEdit,实现编辑框内添加删除按钮的功能(随时把控件Move到一个地方,然后show就可以了,这是万能的办法)

    http://www.qtcn.org/bbs/read-htm-tid-62265-ds-1-page-1.html#180286

  3. Elasticsearch教程(二)java集成Elasticsearch

    1.添加maven <!--tika抽取文件内容 --> <dependency> <groupId>org.apache.tika</groupId> ...

  4. 多态与虚拟 : 物件导向的精髓 (侯捷在石器时代对OO的理解)

    [自序]虑而後能得(自序)故事接触 C++ 大约是 1989 年的事.那时候的 PC 以现在的眼光看,除了「蛮荒」之外没有更合适的形容词了.横扫千军的 Windows 3.0 还没有诞生,如今以 C+ ...

  5. MySQL InnoDB缓冲池(Buffer Pool)

    InnoDB缓冲池并不仅仅缓存索引,它还会缓存行的数据.自适应哈希索引.插入缓冲(Insert Buffer).锁,以及其他内部数据结构. InnoDB还使用缓冲池来帮助延迟写入,这样就能合并多个写入 ...

  6. 漏洞告诉你:商家为什么都乐于提供免(diao)费(yu)WiFi?

    作为一名小微商户,每天我除了要为经营小店忙得焦头烂额,还要想方设法地寻求提升用户体验.于是,我用了号称“营销神器”的某商用WiFi系统...... 然后不可思议的事情发生了:连上此WiFi的手机(包括 ...

  7. 使用EurekaLog时遇到的问题

    1.在DLL项目中千万不要加入EurekaLog,不然在主程序调用时就会出现莫名其妙的内存问题. 2.要使用EurekaLog发邮件的功能,发邮件的SMTP服务器必须支持8bit MIME编码.如SI ...

  8. Windows10 下运行Linux子系统

    关于Windows10 下运行Linux子系统: Windows10内置Linux子系统初体验:http://www.jianshu.com/p/bc38ed12da1d Win10运行Ubuntu版 ...

  9. JVM(六):探究类加载过程-下

    JVM(六):探究类加载过程-下 上文说了类加载过程的5个阶段,着重介绍了各个阶段做的工作.在本文中,我们对执行加载阶段的主体进行探讨,学习类加载器的模型和逻辑,以及我们该如何自定义一个类加载器. 定 ...

  10. yii框架多文件上傳

    //控制器層 <?phpnamespace app\controllers; use app\models\Uploads;use Yii;use yii\web\Controller;use ...