# 安装和配置

# go 语言本体

进入 go 语言官网 快的离谱
随后选择对应的版本,双击 msi 文件安装

# goland 安装

一般来说大部分语言都需要一个 IDE, 这里用 goland 做例子

goland 是付费软件,但网上破解教程一大堆,所以这里就不给破解教程了

这里 下载
安装及配置教程同 pycharm, 故不在赘述

# 常见错误

# $gopath/go.mod exists but should not

因为 goland 自动启用了 go 模块集成,但模块集成与 gopath 不兼容,所以出现此错误
解决方案:在命令行中执行以下命令

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

然后删除 gopath 配置,重启电脑,问题随之解决。

可以通过更改 gopath 或禁用 go.mod 的方式解决,但推荐使用 module 的方法

# no Go files in goroot/src/go

出现于既没有设置 module, 也没有设置 gopath 并且代码在非 src 目录下的情况
可以使用上面的解决方法设置 go module 来解决,这里不推荐使用 gopath 的方法

# go 语言的 hello world

package main
import "fmt"
func main() {
	/* 这是一行注释 */
	fmt.Println("hello world")
}

package main 定义了包名,每个 go 文件的第一行都应该是 packagepackage main 表示这是一个独立的可执行程序,
每个 go 项目都包含一个 main 包名的包
import "fmt" 导入一个指定的库并告诉编译器需要使用这个库,类似于 #include
fmt 库包含了 go 语言的 I/O 函数
func main() 为程序的主函数 (就是最开始执行的函数), 一般是第一个执行的函数

init() 函数的优先级高于 func main()

/* xxx */ 是注释,同 C++ 的写法, // 是单行注释, /* */ 是多行注释,不可嵌套使用
fmt.Println 是输出一个字符串到控制台,使用 fmt.Print("str\n") 可以实现同样的效果

当标识符 (包括常量、变量、类型、函数名、结构字段等等) 以一个大写字母开头,如:Group1,
那么使用这种形式的标识符的对象就可以被外部包的代码所使用 (客户端程序需要先导入这个包),
这被称为导出 (像面向对象语言中的 public); 标识符如果以小写字母开头,则对包外是不可见的,
但是他们在整个包的内部是可见并且可用的 (像面向对象语言中的 private)。