Go语言基础语法和常用特性解析 | 豆包MarsCode AI刷题

67 阅读2分钟

Go 语言(也称为 Golang)是由 Google 开发的一种静态强类型、编译型、并发型语言。Go 语言的设计目标是提供一种简单、高效、可靠的编程语言,适用于构建高性能的网络服务和分布式系统。本文将详细介绍 Go 语言的基础语法和常用特性,帮助你快速入门 Go 语言开发。

一、Go 语言基础语法

1. 变量和常量

在 Go 语言中,变量和常量的声明方式如下:

// 变量声明
var a int = 10
var b = 20 // 类型推断
c := 30    // 简短声明

// 常量声明
const PI = 3.14
const (
    Sunday = iota // iota 是常量生成器,从 0 开始递增
    Monday
    Tuesday
)
2. 数据类型

Go 语言支持多种基本数据类型,包括整型、浮点型、布尔型、字符串等。

var i int = 10
var f float64 = 3.14
var b bool = true
var s string = "Hello, Go!"
3. 控制结构

Go 语言支持常见的控制结构,如条件语句和循环语句。

// 条件语句
if a > b {
    fmt.Println("a is greater than b")
} else if a < b {
    fmt.Println("a is less than b")
} else {
    fmt.Println("a is equal to b")
}

// 循环语句
for i := 0; i < 10; i++ {
    fmt.Println(i)
}

// 无限循环
for {
    fmt.Println("Infinite loop")
    break // 使用 break 跳出循环
}
4. 函数

Go 语言的函数定义如下:

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

// 多返回值
func swap(x, y string) (string, string) {
    return y, x
}
5. 数组和切片

Go 语言支持数组和切片(动态数组)。

// 数组
var arr [5]int
arr[0] = 1
arr[1] = 2

// 切片
var slice []int
slice = append(slice, 1)
slice = append(slice, 2)
6. 映射(Map)

Go 语言的映射类似于其他语言中的字典或哈希表。

var m map[string]int
m = make(map[string]int)
m["key1"] = 1
m["key2"] = 2

二、Go 语言常用特性

1. 并发编程

Go 语言天生支持并发编程,通过 goroutinechannel 实现。

// goroutine
go func() {
    fmt.Println("Hello from goroutine")
}()

// channel
ch := make(chan int)
go func() {
    ch <- 1 // 发送数据到 channel
}()
value := <-ch // 从 channel 接收数据
2. 接口

Go 语言的接口是一种类型,它定义了一组方法的集合。

type Shape interface {
    Area() float64
}

type Rectangle struct {
    Width, Height float64
}

func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

func main() {
    var s Shape
    s = Rectangle{Width: 10, Height: 5}
    fmt.Println(s.Area())
}
3. 错误处理

Go 语言通过返回多个值来处理错误。

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

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Result:", result)
    }
}
4. 包管理

Go 语言使用包来组织代码,通过 import 关键字引入其他包。

import (
    "fmt"
    "math"
)

func main() {
    fmt.Println(math.Pi)
}
5. 测试

Go 语言内置了测试框架,通过 testing 包进行单元测试。

package main

import "testing"

func TestAdd(t *testing.T) {
    result := add(2, 3)
    if result != 5 {
        t.Errorf("Expected 5, got %d", result)
    }
}