Go语言的主要特征
思想
Less can be more 大道至简,小而蕴真 让事情变得很容易,让事情变得简单才难 深刻的工程文化
优点
- 自带GC
- 静态编译,编译好后,扔服务器直接运行
- 简单的思想,没有继承、多态、类等
- 丰富的库和详细的开发文档
- 语法层支持并发,和拥有同步并发channel类型,使并发开发变得非常方便
- 简洁的语法,提高开发效率,同时提高代码的阅读性和可维护性
- 超级简单的交叉编译,仅需更改环境变量。
Go语言的主要特征
- 自动立即回收
- 更丰富的内置类型
- 函数多返回值
- 错误处理
- 匿名函数和闭包
- 类型和接口
- 并发变成
- 反射
- 语言交互性
Golang文件名
所有的go源码都是以”.go”结尾
Go语言命名
Go的函数、变量、常量、自定义类型、包的命名方式遵循一下规则
- 首字符可以使unicode字符或者下划线
- 剩余字符可以使unicode字符、下划线、数字
- 字符长度不限
Go语言的关键字 case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var Go语言保留字
```go Constants: true false iota nil
Types: int int8 int16 int32 int64uint uint8 uint16 uint32 uint64 uintptrfloat32 float64 complex128 complex64bool byte rune string errorFunctions: make len cap new append copy close deletecomplex real imagpanic recover
> > <a name="851f9fa0"></a>#### 可见性>> - 声明在函数内部,使函数本地的值,类似private> - 声明在函数外部,使对当前包可见> - 声明在函数外部并且首字母大写是所有包可见的全局值如public> > <a name="ec65e141"></a>#### Go 语言声明>> - var(声明变量)> - const(声明常量)> - type(声明类型)> - func(声明函数)>Go的程序时保存在多个.go文件当中,文件的第一行时package xxx声明,用来说明该文件属于哪个包,然后import 声明,接下来时类型、变量、常量、函数声明---<a name="81900945"></a>### Go项目构建以及编译> > <a name="81900945-1"></a>### Go项目构建以及编译> - 创建工程文件夹 goproject> - 创建目录 src pkg bin> - src源码相关文件> - pkg包文件> - bin相关文件> - 在GOPATH种添加project路径。<br />> - 如果工程中有自己的包 则在src下面新建包文件 如example> - 在example 下面创建example.go 和 example_test.go> - 编译调试包> - go build example> - go test example> - go install example<br />> 注: 在进行包编译的时候 可能会遇到如下问题> 1. `package module is not in GOROOT (/usr/local/go/src/module)`<br />这是因为在GO111MODULE环境变量引起的。GO111MODULE 有三个值,off、on、auto,off 和 on 即关闭和开启,auto 则会根据当前目录下是否有 go.mod 文件来判断是否使用 modules 功能。无论使用哪一种方式都不会默认在GOPATH下面当中去查找文件。<br />在使用 go module 时,将 GO111MODULE 全局环境变量设置为 off,在需要使用的时候再开启,避免在已有项目中意外引入 go module。> 解决方案一> ```go#关闭GO111MODULEGO111MODULE="off"
解决方案2
使用go mod
#先初始化一个go.modgo mod init test#然后引入模块的时候采用test开头 比如import "test/example"
gopls requires a module at the root of your workspacevscode当中报错 该提示
"gopls": {"experimentalWorkspaceModule": true,},


