一.概要
什么是go?
GO语言是(google2009年推出)一门编译语言且开源。在程序运行之前,编译器就把代码转换为机器码0和1。所有代码编译成一个可执行文件,在编译的过程中,编译器能够捕获一些错误。
Go适合用来做什么
这里网上搬运几条给大家看看。
- 服务器编程,以前你如果使用C或者C 做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。
- 分布式系统,数据库代理器等。
- 网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用。
- 内存数据库,如google开发的groupcache,couchbase的部分组建。
- 云平台,目前国外很多云平台在采用Go开发,CloudFoundy的部分组建,前VMare的技术总监自己出来搞的apcera云平台。
go语言的优缺点
这里网上搬运几条给大家看看。
优点:
- 可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。
- 静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。
- 语言层面支持并发,这个就是Go最大的特色,天生的支持并发。Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。
- 内置runtime,支持垃圾回收,这属于动态语言的特性之一吧,虽然目前来说GC(内存垃圾回收机制)不算完美,但是足以应付我们所能遇到的大多数情况,特别是Go1.1之后的GC。
- 简单易学,Go语言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go关键字是25个,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等。
- 丰富的标准库,Go目前已经内置了大量的库,特别是网络库非常强大。
- 内置强大的工具,Go语言里面内置了很多工具链,最好的应该是gofmt工具,自动化格式化代码,能够让团队review变得如此的简单,代码格式一模一样,想不一样都很困难。
- 跨平台编译,如果你写的Go代码不包含cgo,那么就可以做到window系统编译linux的应用,如何做到的呢?Go引用了plan9的代码,这就是不依赖系统的信息。
- 内嵌C支持,Go里面也可以直接包含C代码,利用现有的丰富的C库。
缺点
1:缺少框架 Go 语言没有一个主要的框架,如 Ruby 的 Rails 框架、Python 的 Django 框架或 PHP 的 Laravel。这是 Go 语言社区激烈讨论的问题,因为许多人认为我们不应该从使用框架开始。在很多案例情况中确实如此,但如果只是希望构建一个简单的 CRUD API,那么使用 Django/DJRF、Rails Laravel 或 Phoenix 将简单地多。
2:错误处理 Go 语言通过函数和预期的调用代码简单地返回错误(或返回调用堆栈)而帮助开发者处理编译报错。虽然这种方法是有效的,但很容易丢失错误发生的范围,因此我们也很难向用户提供有意义的错误信息。错误包(errors package)可以允许我们添加返回错误的上下文和堆栈追踪而解决该问题。另一个问题是我们可能会忘记处理报错。诸如 errcheck 和 megacheck 等静态分析工具可以避免出现这些失误。虽然这些解决方案十分有效,但可能并不是那么正确的方法。
3:软件包管理 Go 语言的软件包管理绝对不是完美的。默认情况下,它没有办法制定特定版本的依赖库,也无法创建可复写的 builds。相比之下 Python、Node 和 Ruby 都有更好的软件包管理系统。然而通过正确的工具,Go 语言的软件包管理也可以表现得不错。我们可以使用 Dep 来管理依赖项,它也能指定特定的软件包版本。除此之外,我们还可以使用一个名为 VirtualGo 的开源工具,它能轻松地管理 Go 语言编写的多个项目
准备工作
- 开发工具:Visual Studio Code,vscode内部的go语言相关插件。
- go语言中文网:studygolang.com/dl
- 在线编译工具:Go Playground
- VS Code:code.visualstudio.com/
二.主要内容
go语言环境安装:
先打开go语言中文网选择适合你的操作系统的安装包。下载安装即可,推荐安装在c盘因为它的环境变量是默认配置在C盘。
验证是否安装成功,cmd中输入go命令之后返回一堆帮助命令则代表成功如下图所示。
下载安装IDE以及插件:
Control Shift P 输入go:install/Update Tools.然后回车把列表里的插件全选下载下来。
这里下载安装需要注意的是,如果有梯子下载起来速度快一点。没有的话需要更换国内代理因为它是直接去github上下载的,操作命令如下:
包和函数
- package 声明包,表示下面所写的代码都属于这个package。
- import 导入包,go语言里有很多标准库,根据自己的需要进行引用。
- func 表示声明函数。
注意事项
- go语言执行首先会寻找包名为main的包,再找到main函数如果找不到则会报错。
- func的花括号“{”必须和func在同一行,而“}”必须自己独占一行,否则会报错。
代码
代码语言:javascript复制package main
import (
"fmt"
)
func main() {
fmt.Println("hello,juster")
}