test

一、初识Go

1.1 简介

Go以C语言为原型,以及借鉴其他语言的一些特性来编写完成,其思想是“Less can be more(大道至简,小而蕴真)”,让事情变得简单,表现出深刻的工程文化。

1.1.1 优点

    • -
  • 自带gc
  • 静态编译,编译好后,扔服务器直接运行
  • 简单的思想,没有继承,多态,类等
  • 丰富的库和详细的开发文档
  • 语法层支持并发,和拥有同步并发的channel类型,使并发开发变得非常方便
  • 简洁的语法,提高开发效率,同时提高代码的阅读性和可维护性
  • 超级简单的交叉编译,仅需更改环境变量

1.1.1.1 语法特征

    • -
  • 自动立即回收
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性

1.1.2 适用领域

    • -
  • 服务器编程,以前使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。
  • 分布式系统,数据库代理器等。
  • 网络编程,这一块目前应用最广,包括Web应用、API应用、下载应用。
  • 内存数据库,如google开发的groupcache,couchbase的部分组建。
  • 云平台,目前很多云平台在采用Go开发

1.2 开发环境(CentOS7)

1.2.1 Go 二进制安装

wget https://studygolang.com/dl/golang/go1.13.12.linux-amd64.tar.gz
  • 解压后,得到一个“go”目录
tar zxf go1.13.12.linux-amd64.tar.gz 
ls
go  go1.13.12.linux-amd64.tar.gz
  • 把“go”目录放入指定位置
在Linux系统中放在/usr/local 目录下
/usr/local/go 即为Go语言的安装根目录

mv go /usr/local/
ls /usr/local/
bin  etc  games  go  include  lib  lib64  libexec  sbin  share  src

在Windows系统中,放在C:\目录下
c:\go  即为Go语言安装根目录
  • 添加环境变量
vim /etc/profile

export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
export GOPATH=/home/apps/go
export GOPROXY=https://goproxy.io

source /etc/profile


  GOROOT: 包含Go语言的安装根目录的路径
  GOPATH: 包含若干个工作区目录的路径
  GOBIN: 包含用于放置Go程序生成的可执行文件的目录的路径
  • 测试
[root@CentOS7-DEV go]# go version
go version go1.13.12 linux/amd64

[root@CentOS7-DEV go]# go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOENV="/root/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/apps/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
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 -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build227142360=/tmp/go-build -gno-record-gcc-switches"

1.2.2 Vscode 二进制安装

    • -
  • 下载二进制安装包
wget https://vscode.cdn.azure.cn/stable/17299e413d5590b14ab0340ea477cdd86ff13daf/code-stable-1594838263.tar.gz
  • 解压安装
yum install libScrnSaver

mkdir /home/system && tar zxf code-stable-1594838263.tar.gz -C /home/system
  • 创建桌面启动图标
cp /home/system/vscode-1594838263/resources/app/resources/linux/code.png /usr/share/icons

cat /usr/share/applications/vscode.desktop 
[Desktop Entry]
Name=Visual Studio Code
Comment=Multi-platform code editor for Linux
Exec=/home/system/vscode-1594838263/bin/code --user-data-dir=/home/vscode
Icon=/usr/share/icons/code.png
Type=Application
StartupNotify=true
Categories=TextEditor;Development;Utility;
MimeType=text/plain;

cp /usr/share/applications/vscode.desktop ~/桌面
  • 安装如下扩展模块

    • go
    • Code Runner

1.3 命令行工具

1.3.1 go

    • -

Go is a tool for managing Go source code.

Usage:

go  [arguments]

The commands are:

bug         start a bug report
build       compile packages and dependencies
clean       remove object files and cached files
doc         show documentation for package or symbol
env         print Go environment information
fix         update packages to use new APIs
fmt         gofmt (reformat) package sources
generate    generate Go files by processing source
get         add dependencies to current module and install them
install     compile and install packages and dependencies
list        list packages or modules
mod         module maintenance
run         compile and run Go program
test        test packages
tool        run specified go tool
version     print Go version
vet         report likely mistakes in packages

Use "go help " for more information about a command.



Additional help topics:

buildmode   build modes
c           calling between Go and C
cache       build and test caching
environment environment variables
filetype    file types
go.mod      the go.mod file
gopath      GOPATH environment variable
gopath-get  legacy GOPATH go get
goproxy     module proxy protocol
importpath  import path syntax
modules     modules, module versions, and more
module-get  module-aware go get
module-auth module authentication using go.sum
module-private module configuration for non-public modules
packages    package lists and patterns
testflag    testing flags
testfunc    testing functions

Use "go help " for more information about that topic.

  • go env用于打印Go语言的环境信息
  • go get可以根据要求和实际情况从互联网上下载或更新指定的代码包及其依赖包,并对它们进行编译和安装
  • go build用于编译我们指定的源码文件或代码包以及它们的依赖包
  • go install用于编译并安装指定的代码包及它们的依赖包
  • go clean命令会删除掉执行其它命令时产生的一些文件和目录
  • go doc命令可以打印附于Go语言程序实体上的文档。我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的
  • go test命令用于对Go语言编写的程序进行测试
  • go list命令的作用是列出指定的代码包的信息
  • go fix会把指定代码包的所有Go语言源码文件中的旧版本代码修正为新版本的代码
  • go vet是一个用于检查Go语言源码中静态错误的简单工具
  • go tool pprof命令来交互式的访问概要文件的内容

1.3.2 其它

    • -

go命令和工具 详见《Go命令教程》 https://github.com/hyper0x/go\_command\_tutorial

你可能感兴趣的:(golang)