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

107 阅读4分钟

Go是一种静态类型、编译型的编程语言,它的语法简洁,易于阅读和编写。

  • 高性能、高并发:Go语言通过轻量级的线程(goroutine)和通信原语(channel)实现高效的并发编程,适合构建高性能的分布式系统。

  • 语法简单、学习曲线平缓:Go的语法设计简洁,易于理解,没有繁琐的特性和复杂的用法,初学者可以快速上手。

  • 丰富的标准库:Go拥有一个强大的标准库,涵盖了网络、文件处理、加密、文本处理等多个领域,开发者可以直接使用这些库来提高开发效率。

  • 完善的工具链:Go提供了一套全面的工具,包括格式化工具、测试工具、性能分析工具等,方便开发者进行代码管理和优化。

  • 静态链接:Go语言的编译器将所有依赖打包为一个可执行文件,简化了部署和交付过程。

  • 快速编译:Go的编译速度很快,对于大型项目也能快速完成编译,提高了开发效率。

  • 跨平台:Go可以在各种操作系统上运行,开发者可以在不同平台上编译和运行相同的代码。

  • 垃圾回收:Go拥有自动内存管理,内置垃圾回收机制,开发者不需要手动管理内存,减少了出现内存泄漏的可能性。

下面是Go语言的基础语法:

1. 包和导入

Go程序是由包组成的,可以使用关键字package指定包名。每个Go程序都必须包含一个名为main的包,它是程序的入口。

导入其他包使用关键字import,可以导入一个或多个包,也可以使用_来省略导入的包,但是它们的初始化函数仍然会被执行。

package main

import (
    "fmt"
    "math"
)

2. 变量和常量

Go语言中的变量和常量需要先声明后使用,可以使用关键字var来声明变量,使用关键字const来声明常量。

var x int = 10
var y, z = 20, 30

const PI = 3.14159
const (
    Monday = 1
    Tuesday = 2
    Wednesday = 3
)

3. 数据类型

Go语言中的数据类型包括基本类型和复合类型。基本类型包括整型、浮点型、布尔型和字符串型。复合类型包括数组、切片、映射、结构体、接口和函数类型等。

var i int = 10
var f float64 = 3.14159
var b bool = true
var s string = "hello world"

var arr [5]int = [5]int{1, 2, 3, 4, 5}
var slice []int = []int{1, 2, 3, 4, 5}
var m map[string]int = map[string]int{"one": 1, "two": 2}

4. 控制结构

Go语言中的控制结构包括条件语句、循环语句和跳转语句。

条件语句包括ifswitch语句,if语句可以包含一个可选的else分支,switch语句可以使用多个case分支和一个可选的default分支。

if x > 0 {
    fmt.Println("x is positive")
} else if x < 0 {
    fmt.Println("x is negative")
} else {
    fmt.Println("x is zero")
}

switch day {
    case 1:
        fmt.Println("Monday")
    case 2:
        fmt.Println("Tuesday")
    case 3:
        fmt.Println("Wednesday")
    default:
        fmt.Println("Unknown day")
}

循环语句包括forrange语句,for语句可以使用一个条件表达式或者一个无限循环,range语句可以用于遍历数组、切片、映射和通道等。

for i := 0; i < 10; i++ {
    fmt.Println(i)
}

for _, value := range slice {
    fmt.Println(value)
}

跳转语句包括breakcontinuegoto语句,break语句用于跳出循环,continue语句用于跳过当前循环,goto语句用于跳转到指定的标签。

for i := 0; i < 10; i++ {
    if i == 5 {
        break
    }
    if i == 3 {
        continue
    }
    fmt.Println(i)
}

goto label
fmt.Println("hello")
label:
fmt.Println("world")

5. 函数

Go语言中的函数使用关键字func来声明,可以包含多个参数和返回值。

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

func swap(x, y string) (string, string) {
    return y, x
}

6. 指针

Go语言中的指针使用关键字*来声明,可以用于在函数间传递参数和返回值。

var x int = 10
var p *int = &x
fmt.Println(*p) // 输出 10


7. 结构体

Go语言中的结构体使用关键字struct来声明,可以包含多个字段,每个字段可以有一个名称和一个类型。

type Person struct {
    name string
    age int
}

func main() {
    p := Person{name: "Alice", age: 20}
    fmt.Println(p.name, p.age) // 输出 Alice 20
}