跟光磊学Go语言-Go语言概述与开发环境搭建

Go语言简介Go语言的发展历史Go的三位创始人想要解决Google公司在软件开发中遇到的一些困难和挑战

  • 多核硬件架构的广泛应用
  • 超大规模(几万台甚至是几十万台服务器)的分布式集群
  • web开发模式导致前所未有的开发规模和更新速度
Go语言的三位创始人
  • Rob Pike:Unix的早期开发者和UTF-8的创始人
  • Ken Thompson:Unix的创始人 , C语言的创始人 , 1983年获得图灵奖
  • Robert Griesemer:Google V8 JS Enginer,Java虚拟机 Hot Spot开发者
语言的特点
  • 开源、跨平台
  • 简单:C语言37个关键字 , C++11多达84个关键字 , Go只有25个关键字 , 对于复杂任务 , 例如并发和内存管理 , go语言提供了并发支持以及垃圾回收机制 。
  • 高效:GO语言作为一种编译 、强类型语言 , 仍然可以使用指针去访问内存 。
  • 生产力:Go语言有简洁清晰的依赖管理以及独特的接口类型设计 , 甚至对一些编程范式的约束为开发者做出了选择 , 例如支持复合而不支持继承的扩展方式 。 C/C++,Java,Python的程序员能够快速掌握Go语言
  • C/C++语言开发效率低 , 但是运行效率高 , 而Java/Python开发效率高 , 而运行效率低 。 但是Go语言高效的开发效率和运行效率
Go语言的应用场景
  • 阿里、腾讯、百度、滴滴、字节跳动、小米都在使用Go语言构建大规模的互联网系统
  • Docker,Kubernetes都是使用Go编写的 , Go也被称为云端开发语言
  • 区块链项目ethereum , hyperledger这些都是使用Go语言开发的 , 因此Go语言是区块链的首选开发语言
  • 传统的企业应用 , 物联网应用都有Go的身影 。
Go语言开发环境搭建
  • 下载和安装Go语言
Go语言官网Go语言安装包的下载地址:
Go语言的安装路径不要包含中文
Go语言支持主流的操作系统 , 可以根据不同的操作系统下载对应平台的安装包进行安装 , 例如macOS平台就可以选择下载go1.15.5.darwin-amd64.pkg后进行安装 , Go语言的安装过程和普通软件安装类似 。 只需要跟着提示一步步安装即可 。
安装完成以后通过go version和go env命令来查看go的版本信息以及go的环境信息
在开发第一个Go程序之前需要检测Go语言的版本以及GOPATH环境变量的配置 , 在Go1.8版本以后不需要配置GOPATH这个环境变量 , GOPATH就是Go程序的目录(例如/Users/liuguanglei/Documents/workspace/go/ittimelinedotnet/go-core/) 。 Go1.8以后没有设置GOPATH环境变量 , Unix上默认是使用的是$HOME/go,在Windows上使用的是%USERPROFILE%/go , 而macOS上GOPATH可以使用修改~/.bash_profile来设置 。
liuguangleideMacBook-Pro:main liuguanglei$ go versiongo version go1.15.5 darwin/amd64liuguangleideMacBook-Pro:main liuguanglei$ go envGO111MODULE=""GOARCH="amd64"GOBIN=""GOCACHE="/Users/liuguanglei/Library/Caches/go-build"GOENV="/Users/liuguanglei/Library/Application Support/go/env"GOEXE=""GOFLAGS=""GOHOSTARCH="amd64"GOHOSTOS="darwin"GOINSECURE=""GOMODCACHE="/Users/liuguanglei/go/pkg/mod"GONOPROXY=""GONOSUMDB=""GOOS="darwin"GOPATH="/Users/liuguanglei/go"GOPRIVATE=""GOPROXY=",direct"GOROOT="/usr/local/go"GOSUMDB="sum.golang.org"GOTMPDIR=""GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"GCCGO="gccgo"AR="ar"CC="clang"CXX="clang++"CGO_ENABLED="1"GOMOD=""CGO_CFLAGS="-g -O2"CGO_CPPFLAGS=""CGO_CXXFLAGS="-g -O2"CGO_FFLAGS="-g -O2"CGO_LDFLAGS="-g -O2"PKG_CONFIG="pkg-config"GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/kx/rt15dsy914v137srfxndgmcm0000gn/T/go-build035664342=/tmp/go-build -gno-record-gcc-switches -fno-common"liuguangleideMacBook-Pro:main liuguanglei$其中GOROOT表示Go的根目录 , 默认是/usr/local/go,而GOPATH默认是/Users/liuguanglei/go
第一个Go程序编写Go的HelloWorld程序 , Go语言的源文件必须是以.go结尾 , 例如hello_world.go
package mainimport "fmt"/*我的第一个Go程序@author liuguanglei 18601767221@163.com@wechat 18601767221@version2020/11/15 5:12 下午@since Go1.15.5*/funcmain(){ fmt.Println("Hello World with macOS11--tt-darkmode-color: #777777;">go run 程序是不会生成二进制的可执行文件
liuguangleideMacBook-Pro:~ liuguanglei$ cd Documents/workspace/go/ittimelinedotnet/go-core/src/net/ittimeline/go/core/foundational/object/main/ liuguangleideMacBook-Pro:main liuguanglei$ pwd/Users/liuguanglei/Documents/workspace/go/ittimelinedotnet/go-core/src/net/ittimeline/go/core/foundational/object/mainliuguangleideMacBook-Pro:main liuguanglei$ go run hello_world.goHello World with macOS11//os.Exit()返回值 0表示正常退出 , -1表示异常退出 , 终端上运行时会给出异常的状态码255 os.Exit(0)}
  • main函数不支持传入参数
使用go run来运行Go程序是只需要使用go run 源文件 参数就可以传递参数