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语言保留字
Constants: true false iota nil Types: int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string error Functions: make len cap new append copy close delete complex real imag panic recover
可见性
- 声明在函数内部,使函数本地的值,类似private
- 声明在函数外部,使对当前包可见
- 声明在函数外部并且首字母大写是所有包可见的全局值如public
Go 语言声明
- var(声明变量)
- const(声明常量)
- type(声明类型)
- func(声明函数)
Go的程序时保存在多个.go文件当中,文件的第一行时package xxx声明,用来说明该文件属于哪个包,然后import 声明,接下来时类型、变量、常量、函数声明
Go项目构建以及编译
Go项目构建以及编译
- 创建工程文件夹 goproject
- 创建目录 src pkg bin
- src源码相关文件
- pkg包文件
- bin相关文件
在GOPATH种添加project路径。
GOPATH- 如果工程中有自己的包 则在src下面新建包文件 如example
- 在example 下面创建example.go 和 example_test.go
- 编译调试包
- go build example
- go test example
go install example
goproject文件
注: 在进行包编译的时候 可能会遇到如下问题
package module is not in GOROOT (/usr/local/go/src/module)
这是因为在GO111MODULE环境变量引起的。GO111MODULE 有三个值,off、on、auto,off 和 on 即关闭和开启,auto 则会根据当前目录下是否有 go.mod 文件来判断是否使用 modules 功能。无论使用哪一种方式都不会默认在GOPATH下面当中去查找文件。
在使用 go module 时,将 GO111MODULE 全局环境变量设置为 off,在需要使用的时候再开启,避免在已有项目中意外引入 go module。
解决方案一
#关闭GO111MODULE GO111MODULE="off"
解决方案2
使用go mod
#先初始化一个go.mod go mod init test #然后引入模块的时候采用test开头 比如 import "test/example"
gopls requires a module at the root of your workspace
vscode当中报错 该提示
解决方案配置该参数解决
"gopls": {
"experimentalWorkspaceModule": true,
},
网友评论