over-golang/01-基础语法/01-Go简介.md
2021-07-02 18:11:59 +08:00

5.1 KiB
Raw Permalink Blame History

一 Go语言介绍

Go语言是Google公司开发的一种静态、编译型语言具备自动垃圾回收功能原生支持并发开发。

Go的诞生是为了解决当下编程语言对并发支持不友好、编译速度慢、编程复杂这三个主要问题。

Go既拥有接近静态编译语言如C的安全和性能又有接近脚本语言如python的开发效率其主要特点有

  • 天然并发语言层面支持并发包括gorotuine、channel
  • 语法优势没有历史包袱包含多返回值、匿名函数、defer
  • 语言层面支持多核CPU利用

与Java相比的不同

  • 没有Java支持的一些面向对象思想重载、构造函数、继承等
  • 代码规范严格:花括号位置固定,变量名大小写代表公有私有等
  • 支持函数式编程:匿名函数,闭包
  • 接口非侵入式:不需要显式声明对接口的继承,实现了接口的方法即为实现了该接口类型

二 Go安装

推荐使用官方的安装包直接安装,下载地址:https://golang.google.cn/dl/

贴士本笔记都是基于go1.13

Win安装Go
打开Win安装包下一步下一步即可默认安装在目录c:\Go

Mac安装Go
打开Mac安装包下一步下一步即可需要预装Xcode。安装完毕后需配置环境变量即可使用但是如果要使用一些go mod功能推荐如下配置:

vim ~/.bash_profile

export GOROOT=/usr/local/go                 # golang本身的安装位置
export GOPATH=~/go/                         # golang包的本地安装位置
export GOPROXY=https://goproxy.io           # golang包的下载代理
export GO111MODULE=on                       # 开启go mod模式
export PATH=$PATH:$GOROOT/bin               # go本身二进制文件的环境变量
export PATH=$PATH:$GOPATH/bin               # go第三方二进制文件的环境便令

# 重启环境
source ~/.bash_profile

Linux安装Go

# 下载解压
wget https://dl.google.com/go/go1.13.1.linux-amd64.tar.gz
tar zxvf go*.tar.gz -C /usr/local/

# 配置环境注意该环境必须是go1.11版本及以上且项目要求使用go mod才可以开启
vim /etc/profile
export GOROOT=/usr/local/go                 # golang本身的安装位置
export GOPATH=~/go                          # golang包的本地安装位置
export GOPROXY=https://goproxy.io,direct    # golang包的下载代理,回源地址获取
export GO111MODULE=on                       # 开启go mod模式
export PATH=$PATH:$GOROOT/bin               # go本身二进制文件的环境变量
export PATH=$PATH:$GOPATH/bin               # go第三方二进制文件的环境便令

# 重启环境
source /etc/profile 

测试安装:

# 查看go版本
go version

# 查看go环境配置
go env  

关于go modules的详细讲解位于本章12节。

三 HelloWorld

新建文件hello.go,代码如下:

package main                        //每个程序都有且仅有一个main包

import "fmt"    

func main() {                       //主函数main只有一个
    fmt.Println("Hello World!")     //函数调用:包名.函数名
}

运行文件:

# 执行方式一:先编译,再运行
go build hello.go        # 编译。在同级目录下生成文件`hello`,添加参数`-o 名称` 则可指定生成的文件名 
./hello                  # 运行。贴士win下生成的是.exe文件直接双击执行即可

# 执行方式二:直接运行
go run hello.go         

两种执行流程的区别:

  • 先编译方式可执行文件可以在任意没有go环境的机器上运行因为go依赖被打包进了可执行文件
  • 直接执行方式源码执行时依赖于机器上的go环境没有go环境无法直接运行

四 Go语法注意

  • Go源文件以 "go" 为扩展名
  • 与Java、C语言类似Go应用程序的执行入口也是main()函数
  • Go语言严格区分大小写
  • Go不需要分号结尾
  • Go编译是一行一行执行所以不能将类似两个 Print 函数写在一行
  • Go语言定义的变量或者import的包如果没有使用到代码不能编译通过
  • Go的注释使用 // 或者 /* */

五 开发工具推荐

笔者推荐的go开发工具

  • goland
  • vscode

vscode的相关go插件会出现无法下载情况解决办法

# 如果开启了go mod则
    go get -u -v github.com/ramya-rao-a/go-outline
    go get -u -v github.com/acroca/go-symbols
    go get -u -v golang.org/x/tools/cmd/guru
    go get -u -v golang.org/x/tools/cmd/gorename
    go get -u -v github.com/rogpeppe/godef
    go get -u -v github.com/sqs/goreturns
    go get -u -v github.com/cweill/gotests/gotests
    go get -u -v golang.org/x/lint/golint

# 如果未开启go mod则需要进入cd $GOPATH/src ,使用 git clone 下载上述文件        

# 安装
cd $GOPATH
    go install github.com/ramya-rao-a/go-outline
    go install github.com/acroca/go-symbols
    go install golang.org/x/tools/cmd/guru
    go install golang.org/x/tools/cmd/gorename
    go install github.com/rogpeppe/godef
    go install github.com/sqs/goreturns
    go install github.com/cweill/gotests/gotests
    go install golang.org/x/lint/golint