Golang 介绍
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
由罗伯特·格瑞史莫,罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于Inferno操作系统所开发的。Go于2009年11月正式宣布推出,成为开放源代码项目,支持Linux、macOS、Windows等操作系统。在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言”。
Go的语法接近C语言,但对于变量的声明有所不同。Go支持垃圾回收功能。Go的并行计算模型是以东尼·霍尔的通信顺序进程(CSP)为基础,采取类似模型的其他语言包括Occam和Limbo,但它也具有pipeline模型的特征,比如通道传输。在1.8版本中开放插件(Plugin)的支持,这意味着现在能从Go中动态加载部分函数。
与C++相比,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了 切片(Slice) 型、并发、管道、垃圾回收功能、接口等特性的语言级支持。Go 2.0版本将支持泛型,对于断言的存在,则持负面态度,同时也为自己不提供类型继承来辩护。
开发环境搭建(MaxOS)
安装 Golang SDK
1.Golang 官网,进入下载页面,选择对应自己操作系统的版本下载安装。
brew install go
go env
升级Golang
1.从官网下载最新的安装程序覆盖安装,安装包会替换原有的程序。
brew upgrade go
关于 GOROOT 和 GOPATH
GOROOT
/usr/local/go
GOPATH
/Users/username/gogo env
自从引用了GOMOD后 GOPATH 的概念逐渐弱化(现在基本都会使用gomod来管理依赖,可以忘掉gopath)。在集成开发环境中配置好默认的 GOPATH 后,使用gomod管理依赖,所有项目通过gomod下载的第三方依赖都会放到GOPATH下的pkg目录。
GOMOD
Golang从诞生之初就一直有个被诟病的问题:缺少一个行之有效的“官方”包依赖管理工具。其原因是在Google内部,所有人都是在一个代码库上进行开发的,因此并不是非常需要。但Golang变成一个社区化的工程语言之后,这个问题被放大了。
1.GOPATH不符合一般开发者习惯,大部分人更习惯maven、node modules之类的方式
2.GOPATH无法有效的管理版本依赖,没有一个地方能够表明依赖包的具体版本号,无法形成有效的版本配套关系
Golang 1.11 版本引入的 go mod ,其思想类似maven:摒弃vendor和GOPATH,拥抱本地库。
使用gomod也很简单在工程目录下执行:go mod init {module name},该命令会创建一个go.mod文件。
examples
- http_demo.go
package main
import (
"fmt"
"github.com/asmcos/requests"
)
func main() {
req := requests.Requests()
resp, _ := req.Get("https://baidu.com")
fmt.Println(resp.R.StatusCode)
fmt.Println(resp.R.Header["Content-Type"])
}
- go.mod
module HelloWorld
go 1.13
require (
github.com/asmcos/requests v0.0.0-20181227105501-5384de75ad0b // indirect
)
使用集成开发环境开发Golang程序
在开发中我使用 Goland 来开发 GO 程序。
1.Preferences > Go > GOROOT 配置你GO的安装位置
2.Preferences > Go > Global GOPATH 配置你GOPATH位置
这两项配置后基本上就可以开心的开发GO程序了。