今日分享:许多事情在前辈的眼中都是天经地义的,他们会对这些事情说“一直都是这样的”,而现在都要严肃的讨论。--《宽容》
前言
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
特点
相比于其他语言,它有以下特点(内容来源于网络):
可直接编译成机器码,不依赖其他库,便于部署
语言层面支持并发
丰富的标准库
内置runtime,支持垃圾回收
内置强大的工具,gofmt工具统一了编码风格
内嵌C支持,同时有C基础,学Golang也较轻松
原生支持Unicode
Go主要应用
服务器开发
网络应用开发
分布式系统
数据库
云平台
…
环境安装
以Linux平台为例,从https://golang.org/dl/下载linux版本的安装包,假设你要安装到/usr/local目录下:
为了直接使用go命令,需要将go所在bin路径加入到PATH环境变量中,
注意这种方式只对当前shell有效,想要永久生效,需要修改/etc/profile或者~/.bashrc文件,具体不作介绍。
Hello World
环境准备好之后,我们来编写第一个go程序:
编译并运行:
虽然很简单,但是我们仍然一行一行弄清楚。
第一个声明了当前文件位于main包
第二行导入了fmt包,导入之后就可以使用包中的接口了
第三行定义了main函数,这个与其他编程语言类似,但没有返回类型
第四行使用了fmt包中的Println函数打印了“Hello world”
大括号结束
包类似于其它语言里的库(libraries)或者模块(modules)一个包由位于单个目录下的一个或多个.go源代码文件组成。同时每个源文件都以一条package声明语句开始。但是这里要注意,对于可运行的go程序,main函数必须在main包中。
还需要注意的是:
缺少了必要的包或者导入了不需要的包,程序都无法编译通过
import声明必须跟在文件的package声明之后
main包特殊,它定义了一个独立可执行的程序
每行程序结束后不需要撰写分号,除非一行上有多条语句
大括号不能够换行放置
进一步的思考
无意中发现,编译出来的bin文件足足有2.2M,即便是使用strip命令处理之后,仍然有1.6M。而C语言版的只有8.5K。
即便使用strip处理之后,hellogo仍然有1.6M:
当然我们使用ldd命令看到:
可以看到,C程序默认使用了动态链接,而go程序并没有默认使用动态链接,而是静态链接。这不禁让我们想到开始所说的go程序便于部署。由于不需要依赖其他动态库,go程序能够很方便的在机器上部署。
关于静态库和动态库的优劣不在本文的讨论范围之内。
总结
如今go语言在很多方面都有应用,甚至被称为“21世纪的c语言”。本人初学go,如有描述不当之处,还请各位多多指教。
领取专属 10元无门槛券
私享最新 技术干货