go入门


go的几个特点

可以粗略的认为go = c + python

  1. 从C语言中继承了很多理念,尤其是指针的运用
func testPtr(num *int) {
  *num = 20
}
  1. 引入包的概念,用于组织程序结构。单独的go文件必须存在于package中

  2. 垃圾回收制度,内存自动回收。

  3. 语言层面天然支持高并发
    使用了goroutine的语法,轻量级线程,高效利用多核

  4. 吸收了管道通信机制,有管道的写法,channel的写法,通过管道实现不同goroute之间的相互通信。

  5. 支持一些新的语法,例如切片(slice)和 延迟请求defer

  6. 函数支持多个返回值

func getSumAndSub(num1 int, num2 int) (int, int) {
  sum := num1 + num2
  sub := num1 + num2
  return sum, sub
}

常见的go命令

go run test.go // 执行go文件,相当于 先编译生成可执行文件后接着执行它

go build test.go //编译生成可执行文件
//注意:windows平台生成exe,但是mac就是一个test,无后缀,使用方式./test即可

两者的三个主要区别:

  1. go bulid编译后生成的可执行文件,可以直接拿到同平台下但是没有go开发环境的机器下运行。
  2. go run不会编译生成可执行文件,不能在没有go开发环境下的其它机器上运行。
  3. .go的源文件虽然很小,但是编译后会将源代码所依赖的库文件编译进来,导致生成的可执行文件很大。

关于编译的几个参数:

  1. 编译时可以改变生成的可执行文件的名字
    go build -o hello-new hello.go 可执行文件就会叫hello-new

VSCode下搭建开发环境

  1. 毫无疑问,第一步去官网下载 GO的安装包,Q内需要使用镜像.
  2. 配置path,即GOROOT变量的位置,代表的是安装go的路径。
// 在.bash_profile中配置
export PATH=$PATH:/usr/local/go/bin
//新版本的go只需要配置这一个就行,GOPATH会有默认值 
// go env可以查看所有的开发变量的配置
  1. VSCode中安装相关插件,创建.go文件后,会提示你安装Go基础插件,但是其他go依赖的官方包由于Q内网络环境需要单独下载,详见第四步。
  2. GOPATH目录的src下(一般默认是/Users/yourMacName/go/src)
cd /Users/yourMacName/go/src
mkdir golang.org
cd golang.org
mkdir x
cd x
git clone https://github.com/golang/tools.git tools
git clone https://github.com/golang/lint.git

然后通过在Vscode中command+shift+p

输入go:install

接下来会提示有17个可以安装的依赖包(不同版本数量可能不一样,不一定你的也是17个),全部勾选,点击OK

17个依赖包

VScode的output会发现正在安装(当然上述的过程可能也会失败几次,不一定17个依赖全部一次性Succeed但是只要golang.org/x里面的安装安装对了,这一部就是看网络了,总会安装成功,运气不好的话多安装几次)

安装所有的依赖包

👌,You’re readey to GO :).

go的注意事项

  1. 毫无疑问,后缀只能是go,入口文件必须是main(),严格区分大小写。
  2. 凡是定义过的变量、引入的包必须在原文件中被使用,否则编译不通过。
  3. 逐行写代码,不要两行写到一块,因为编译器会自动在末尾加分号。
  4. 左大括号禁止换行。
  5. main函数必须存在package main中,而且不能重复定义,也就是一个package中只能有一个main函数。
  6. go的转义符(escape char),\r回车的意思是,替换掉本行开头的字符,例如 小明出去吃饭了\r小刚,最终打印结果是: 小刚出去吃饭了
  7. 如果一行字符实在太长了,可以使用,来进行换行,效果等同于+

文章作者: 吴少林
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 吴少林 !
 上一篇
go变量和数据类型 go变量和数据类型
这部分学习go的基础语法,变量的使用以及基本数据类型 变量三部曲 声明变量 赋值 使用该变量 go中声明变量的三种基本形式 单变量的写法 //1、基本声明方式 var i int // 声明一个变量i,数据类型为int,默认值会被赋值
2019-07-28
下一篇 
工作小结-2 工作小结-2
promise兼容IE11最近我开发的公司的竞赛网站被发现在IE11下排行榜无数据,但是在其他浏览器没问题,我然后打开控制台一看,发现了如下错误: 真是醉了,然后发现有三个可行的方案: 直接采用polyfill 在index.html
2019-07-22
  目录