GO 语言简易入门 | 豆包MarsCode AI刷题

107 阅读3分钟

Go(又称 Golang)是由 Google 开发的一种编程语言,以简洁、高效和并发支持为特点。它广泛应用于云计算、网络服务和微服务等领域。本文将简要介绍 Go 语言的基础语法和常用特性。

1. 基础语法

  • 变量声明: Go 采用静态类型系统,但提供了简洁的声明方式:
var x int = 10    // 显式声明
y := 20           // 隐式声明,类型自动推导

与其它语言不同,在 GO 语言当中经常使用 := 直接声明变量。

  • 常量: Go 支持常量的声明,常量一旦赋值不可修改:
const Pi = 3.14

2. 数据类型

相较于 JAVA ,Go 提供多种基本数据类型的同时,也提供了无符号整数以及可以直接使用 int8int16 等声明不同长度的整型变量,包括:

  • 整数int, int32, int64, uint, uint32, uint64

  • 浮点数float32, float64

  • 布尔类型bool

  • 字符串string

示例:

var name string = "Go"
var isActive bool = true
var score float64 = 92.5

3. 控制结构

Go 支持常见的控制结构:

  • 条件语句
if x > 10 {
    fmt.Println("Greater than 10")
} else {
    fmt.Println("Less than or equal to 10")
}
  • 循环语句: 与 Java 不同,Go 只有一个循环结构:for,可用于模拟 whiledo-while
for i := 0; i < 5; i++ {
    fmt.Println(i)
}

4. 函数

Go 中的函数声明类似于: 函数名,参数 参数类型,返回值类型

func add(a int, b int) int {
    return a + b
}
  • 相较于 Java, Go 支持多返回值:
func swap(x, y int) (int, int) {
    return y, x
}
  • 匿名函数:Go 也支持匿名函数,常用于回调:
func() {
    fmt.Println("This is an anonymous function")
}()

5. 数组和切片

  • 数组:固定长度的数据集合:
var arr [3]int = [3]int{1, 2, 3}
  • 切片:动态数组,类似于 ArrayList ,比数组更常用:
slice := []int{1, 2, 3}

6. 结构体和接口

  • 结构体:用于定义复合数据类型。
type Person struct {
    Name string
    Age  int
}

p := Person{"Alice", 30}
  • 接口:定义对象行为的抽象类型:
type Speaker interface {
    Speak() string
}

type Dog struct {}
func (d Dog) Speak() string { return "Woof!" }

var s Speaker = Dog{}

7. 并发编程

Go 最强大的特性之一就是内置的并发支持。Go 使用 goroutines(轻量级线程)和 channels 来实现并发。

  • goroutine:启动一个并发任务。
go func() {
    fmt.Println("This runs concurrently")
}()
  • channel:用于在 goroutine 之间传递数据。
ch := make(chan int)
go func() {
    ch <- 42
}()
fmt.Println(<-ch)

8. 错误处理

Go 语言没有异常机制,采用显式的错误处理方式:

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, fmt.Errorf("division by zero")
    }
    return a / b, nil
}

在每一次函数返回时,都需要额外对于函数的返回进行判断,这也是 Go 语言代码的一个特色。

Go 语言的错误处理基于 error 类型,这是一个内置的接口类型,定义如下:

type error interface {
    Error() string
}

任何实现了 Error() 方法的类型都可以作为一个错误类型。因此我们可以通过自己实现 error 接口自定义自己的错误类型。

在 GO 语言中的需要程序终止运行的错误为 panic ,出现此错误会导致程序终止,但我们也可以使用 recover 去处理一些可以恢复的错误。

Go 语言的错误处理机制通过返回值的方式来实现,尽管这种方式不如传统的异常机制那样直观,但它使得错误处理变得显式且易于管理。开发者可以清晰地表达错误的发生并做出相应的处理,不会忽视掉错误的发生。

总结

Go 语言的设计理念强调简洁和高效,具有强大的并发支持和易于使用的标准库。掌握 Go 的基础语法、数据类型、函数、并发机制等特性,能够帮助你快速上手并开发高效、可靠的程序。