Go 语言入门指南 | 青训营

44 阅读3分钟

Go 语言

Go 语言,也常被称为 Golang,是 Google 发布的开源编程语言。它是静态类型,编译型语言,强调简单、高效并且可靠。

安装和设置

首先,访问 Golang 官方网站 下载并安装适合你操作系统的版本。

安装完毕后,打开命令行或终端,输入 go version,若显示出 Go 的版本号则表示安装成功。

Hello World

Go 语言的入门程序如下:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

将以上代码写入源文件hello.go后在终端运行go run hello.go编译并运行程序,可以看到输出。

1. 变量声明

Go:

goCopy code
var name string = "Go"
name := "Go"
  • Go 语言支持类型推断,即根据赋值来判断变量的类型。

其它语言实现

  • C/C++ 语言需要明确指定变量的类型。
  • 和 C/C++ 一样,Java 也需要明确地指定变量的类型。
  • Python 使用动态类型变量。

**
Go 语言与 C、Java、C++ 的语法特性对比**

2. 条件语句

Go 的条件语句不需要括号包围条件,这与 C、C++ 和 Java 不同,这些语言都使用括号。

Go:

if name == "Go" {...} else {...}

3. 循环

Go 语言没有 whiledo...while 循环,它仅使用 for 循环。

4. 切片类型

  • 切片是 Go 特有的数据结构,其内部可以动态增长,类似于其他语言的动态数组。

其它语言实现

C:

  • 使用静态或动态数组。例如: int numbers[5]; 或使用指针进行动态内存分配。

C++ :

  • 可使用 STL 中的 std::vector 实现动态数组功能。

Java:

  • Java 的 ArrayList 提供了类似的动态数组功能。

5. 函数

在 Go 语言中,函数是基础的代码块,用于执行一系列操作。

一个函数在 Go 语言中通常有以下结构:

func functionName(parameters) returnType {
    // function body
}

其中:

  • func 是声明函数的关键字。
  • functionName 是函数的名称。
  • parameters 是传递给函数的参数列表。
  • returnType 是函数返回的类型。如果函数不返回任何值,则可以省略此部分。

函数参数

函数可以有参数,参数允许传递数据给函数。参数列表包含在圆括号 () 中,由参数名和参数类型组成。

例如,定义一个函数,该函数接受两个整数并返回它们的和:

func add(x int, y int) int {
    return x + y
}

多参数

你可以传递多个参数到一个函数,每个参数用逗号分隔。如果连续的参数都是相同类型,可以省略除最后一个类型之外的其它类型:

func add(x, y int) int {
    return x + y
}

多返回值

Go 语言特有的一个功能是支持从函数返回多个值。每个返回值都需要有自己的类型。

例如,返回一个操作的结果和错误状态:

func divide(x, y float64) (float64, error) {
    if y == 0 {
        return 0, errors.New("Cannot divide by zero!")
    }
    return x / y, nil
}

命名返回值

你可以为返回值提供一个名字,当你这样做时,你可以直接使用这些变量,并且在函数的结尾只需使用 return 语句,不需要明确指定返回值:

func split(sum int) (x, y int) {
    x = sum * 4 / 9
    y = sum - x
    return // 只返回,返回值为 x 和 y
}

可变参数

如果你想让一个函数接受可变数量的参数,可以使用 ... 语法:

func sum(nums ...int) int {
    total := 0
    for _, num := range nums {
        total += num
    }
    return total
}

你可以通过 sum(1, 2, 3, 4) 的方式调用上述函数。

函数作为值和函数类型

在 Go 中,函数也是一种值,并且可以作为其他函数的参数或返回值。此外,你可以定义函数类型,然后使用该类型声明变量。