Go 语言入门指南:基础语法和常用特性解析 | 青训营

80 阅读4分钟

目录

1、环境配置

2、基本语法

3、与python比较

一、环境配置

多语言配置环境,利用vscode同时配置java、python、go语言环境,流程可参考b站各类教程,主要为下载go,vscode软件,并在vscode中安装chinese语言、go、java、python、pyclane等插件。

主要问题goproxy路径配置,在系统变量中增加GOPROXY环境,值为https://goproxy.io,direct,实现go在github中工具的配置,主要的tools可以通过建立.go后缀文件输入helloworld代码一键安装需要的工具。

二、基本语法

  1. 包(Packages) : Go的代码组织以包为基础,一个包可以包含多个文件,同一个包的文件属于同一个命名空间。每个Go程序都必须包含一个main包,其中的main函数是程序的入口点。

  2. 导入(Imports): 使用import关键字导入其他包,类似于Python的import

    goCopy code
    import "fmt"
    
  3. 函数(Functions): 函数使用func关键字定义,返回类型在函数名之后声明。

    goCopy code
    func add(a, b int) int {
        return a + b
    }
    
  4. 变量(Variables): 使用var关键字声明变量,类型在变量名之后声明。

    goCopy code
    var x int
    x = 10
    

    或者使用短变量声明:

    goCopy code
    y := 20
    
  5. 常量(Constants) : 使用const关键字定义常量。

    goCopy code
    const pi = 3.14159
    
  6. 条件语句(Conditional Statements) : Go支持ifelse ifelse条件语句,用法与其他语言类似。

    goCopy code
    if x > 10 {
        fmt.Println("x is greater than 10")
    } else {
        fmt.Println("x is not greater than 10")
    }
    
  7. 循环(Loops): Go只有for循环,用法灵活。可以用它实现循环、迭代集合等。

    goCopy code
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }
    
  8. 错误处理: Go鼓励显式的错误处理,通常返回值中包含一个error类型。

    goCopy code
    result, err := someFunction()
    if err != nil {
        // 处理错误
    }
    

三、与python比较

  1. 静态类型: Go是一种静态类型语言,这意味着在编写代码时必须显式声明变量的类型。与Python不同,Go在编译阶段就会检查类型错误,这有助于在早期捕获许多常见的错误,提高代码质量和可靠性。
  2. 编译型语言: Go是编译型语言,代码在运行之前需要先经过编译。这与Python作为解释型语言不同,需要在运行时逐行解释代码。编译型语言在执行时通常更快,但开发迭代速度可能较慢。
  3. 并发原生支持:Go在语言级别提供了强大的并发支持,使用goroutines和channels来实现。这种并发模型可以轻松地编写高效的并发代码,而在Python中,需要使用多线程、多进程或第三方库来实现类似的功能。
  4. 内存管理和指针:Go允许对内存进行更精细的控制,它具有指针和手动内存管理的能力。这与Python的自动内存管理机制截然不同,后者通过垃圾回收自动处理内存分配和释放。
  5. 简洁的语法和类型推断:Go的语法相对简洁,消除了许多冗余的符号。同时,Go也支持类型推断,使得变量声明时不需要显式指定类型,这在某种程度上减少了冗长的类型信息。
  6. 工具链和依赖管理:Go具有强大的工具链,例如go build用于编译、go test用于测试、go run用于运行等。Go使用模块系统(go mod)来管理依赖,这与Python的依赖管理方式有所不同。
  7. 错误处理: Go鼓励使用显式的错误返回值来处理异常情况,这与Python的异常机制不同。这种方式可以使错误处理更加清晰和可控。
  8. 包和可见性: Go的包系统强制实施了包的可见性规则,只有以大写字母开头的标识符才能从外部包中访问。这有助于封装和模块化代码,但也可能增加一些限制。
  9. 文档和注释: Go对于文档和注释有着严格的要求,注释的格式甚至可以被工具自动生成文档。这与Python的注释和文档约定有所不同,但同样有助于代码的可维护性。