go语言基础

1. go语言的命令

  • build:用于编译给定的代码包或Go语言源码文件及其依赖包。
    • go build -o “xx.exe” :编译成xx.exe文件
  • clean:用于清除执行其他go命令后遗留的目录和文件。
  • doc:用于执行godoc命令以打印指定代码包。
  • env:用于打印Go语言环境信息。
  • fix:用于执行go tool fix命令以修正给定代码包的源码文件中包含的过时语法和代码调用。
  • fmt:用于执行gofmt命令以格式化给定代码包中的源码文件。
  • get:用于下载和安装给定代码包及其依赖包(提前安装git或hg)。
  • list:用于显示给定代码包的信息。
  • run:用于编译并运行给定的命令源码文件。
  • install:编译包文件并编译整个程序。
  • test:用于测试给定的代码包。
  • tool:用于运行go语言的特殊工具。
  • version:显示当前安装的go语言的版本信息。
  • vet:运行go tool vet

2. golang开发 vscode快捷键

2.1. 快捷键位置

1
File->Preferences->Keyboard Shortcuts

2.2. 常用快捷键

1
2
3
4
5
6
7
8
1. 行注释 ctrl + /
2. 块注释 shift+alt+a (可以修改为ctrl+shift+/)
3. ctrl+a 全选
4. ctrl+c 复制
5. ctrl+v 粘贴
6. ctrl+shift+k 删除行
7. ctrl+e查找文件
8. ctrl+shift+p 打开设置命令行

2.3. 修改快捷键

  1. 打开快捷键 File->Preferences->Keyboard Shortcuts
  2. 双击要修改的快捷键
  3. 键盘输入想要使用的快捷键

2.4. 快速生成代码片段

1
2
3
4
5
6
pkgm  main包+main主函数
ff fmt.Printf("", var)
for for i := 0; i < count; i++ {}
forr for _, v := range v {}
fmain func main() {}
a.print! fmt.Printf("a: %v\n", a)

3. 如何编写golang代码

3.1. 代码组织

go应用使用模块来组织代码,包对应到文件系统就是文件夹,模块就是**.go**的go源文件。一个包中会有多个模块,或者多个子包。

3.2. go项目管理工具

早期的go项目使用gopath来管理项目,不方便而且容易出错,从 golang 1.11 开始使用gomod管理项目,当然还有第三方模块例如govendor,我们给大家结束gomod的使用

3.3. 创建一个应用

  1. 首先,创建一个模块路径,例如:duoke360.com/hello,前缀一般为域名

  2. 在该目录中执行 go mod init duoke360.com/hello,该命令会创建一个go.mod文件,内容如下:

    1
    2
    module duoke360.com/hello
    go 1.17
  3. 在hello文件夹中创建一个test.go文件内容如下:

    1
    2
    3
    4
    5
    6
    package main
    import "fmt"

    func main() {
    fmt.Println("多课网,golang教程")
    }
  4. 构建并安装程序,执行如下命令,该命令会在GOPATH或者GOBIN环境变量下面创建一个hello.exe可执行文件

    1
    go install duoke360.com/hello/
  5. 执行,输入hello,运行结果如下

    1
    多课网,golang教程
  6. 创建子包,创建一个morestrings子包,就是创建一个子文件夹,在hello目录下面

  7. 创建一个子模块,morestrings.go,内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    package morestrings

    func ReverseRunes(s string) string {
    r := []rune(s)
    for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
    r[i], r[j] = r[j], r[i]
    }
    return string(r)
    }
  8. 切换到子包目录下面,执行编译

    1
    go build
  9. 在test.go中导入子模块

    1
    fmt.Println(morestrings.ReverseRunes("!oG ,olleH"))
  10. 安装

    1
    go install duoke360.com/hello/
  11. 执行

    1
    Hello, Go!
  12. 导入网络模块,查找地址:https://pkg.go.dev/

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    package main

    import (
    "duoke360.com/hello/morestrings"
    "fmt"

    "github.com/google/go-cmp/cmp"
    )

    func main() {
    fmt.Println(morestrings.ReverseRunes("!oG ,olleH"))
    fmt.Println(cmp.Diff("Hello World", "Hello Go"))
    }
  13. 执行命令,go mod tidy,查看go.mod变量

    1
    2
    3
    4
    5
    module duoke360.com/hello

    go 1.17

    require github.com/google/go-cmp v0.5.6
  14. 安装

    1
    go install duoke360.com/hello/
  15. 执行

    1
    2
    3
    4
    5
    Hello, Go!
    string(
    - "Hello World",
    + "Hello Go",
    )

4. golang标识符

标识符的英文是identifier,通俗的讲,就是给变量、常量、函数、方法、结构体、数组、切片、接口起名字。

4.1. 标识符的组成

  1. 标识符由数字、字母和下划线(_)组成。
  2. 只能以字母和下划线(_)开头。
  3. 标识符区分大小写。

4.2. 举例说明标识符的命名

正确的命名

1
2
3
4
5
6
7
8
9
package main

import "fmt"

func main() {
var name string
var age int
var _sys int
}

错误的标识符

1
2
3
4
5
6
7
8
9
package main

import "fmt"

func main() {
var 1name string
var &age int
var !email
}
-------------本文结束感谢您的阅读-------------