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

  1. Types: int int8 int16 int32 int64
  2. uint uint8 uint16 uint32 uint64 uintptr
  3. float32 float64 complex128 complex64
  4. bool byte rune string error
  5. Functions: make len cap new append copy close delete
  6. complex real imag
  7. panic recover
  1. > > <a name="851f9fa0"></a>
  2. #### 可见性
  3. >
  4. > - 声明在函数内部,使函数本地的值,类似private
  5. > - 声明在函数外部,使对当前包可见
  6. > - 声明在函数外部并且首字母大写是所有包可见的全局值如public
  7. > > <a name="ec65e141"></a>
  8. #### Go 语言声明
  9. >
  10. > - var(声明变量)
  11. > - const(声明常量)
  12. > - type(声明类型)
  13. > - func(声明函数)
  14. >
  15. Go的程序时保存在多个.go文件当中,文件的第一行时package xxx声明,用来说明该文件属于哪个包,然后import 声明,接下来时类型、变量、常量、函数声明
  16. ---
  17. <a name="81900945"></a>
  18. ### Go项目构建以及编译
  19. > > <a name="81900945-1"></a>
  20. ### Go项目构建以及编译
  21. > - 创建工程文件夹 goproject
  22. > - 创建目录 src pkg bin
  23. > - src源码相关文件
  24. > - pkg包文件
  25. > - bin相关文件
  26. > - GOPATH种添加project路径。<br />
  27. ![](https://upload-images.jianshu.io/upload_images/12379345-d15c9531d9385966.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240#alt=GOPATH)
  28. > - 如果工程中有自己的包 则在src下面新建包文件 example
  29. > - example 下面创建example.go example_test.go
  30. > - 编译调试包
  31. > - go build example
  32. > - go test example
  33. > - go install example<br />
  34. ![](https://upload-images.jianshu.io/upload_images/12379345-fdd66be31d18eff4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240#alt=goproject%E6%96%87%E4%BB%B6)
  35. > 注: 在进行包编译的时候 可能会遇到如下问题
  36. > 1. `package module is not in GOROOT (/usr/local/go/src/module)`<br />
  37. 这是因为在GO111MODULE环境变量引起的。GO111MODULE 有三个值,offonautooff on 即关闭和开启,auto 则会根据当前目录下是否有 go.mod 文件来判断是否使用 modules 功能。无论使用哪一种方式都不会默认在GOPATH下面当中去查找文件。<br />
  38. 在使用 go module 时,将 GO111MODULE 全局环境变量设置为 off,在需要使用的时候再开启,避免在已有项目中意外引入 go module
  39. > 解决方案一
  40. > ```go
  41. #关闭GO111MODULE
  42. GO111MODULE="off"

解决方案2

使用go mod

  1. #先初始化一个go.mod
  2. go mod init test
  3. #然后引入模块的时候采用test开头 比如
  4. import "test/example"
  1. gopls requires a module at the root of your workspacevscode当中报错 该提示
    Golang主要特征 - 图1

Golang主要特征 - 图2

  1. "gopls": {
  2. "experimentalWorkspaceModule": true,
  3. },