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

81 阅读3分钟

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

简介

什么是Go语言?

Go语言是由Google开发的一门通用型计算机编程语言,拥有以下特点:

  • 高性能与高并发
    Go的性能可媲美C++和Java。通过标准库或第三方库即可快速构建高并发应用。

  • 语法简洁,学习曲线平缓
    语法风格接近C语言,并在其基础上进行了简化,非常适合新手学习。

  • 丰富的标准库和完善的工具链
    提供了丰富的库支持,并内置了强大的开发工具链。

  • 静态链接与快速编译
    编译后生成单一可执行文件,无需附加依赖,适合容器化部署,构建速度极快。

  • 跨平台支持
    支持多平台构建,可轻松开发跨平台应用。

  • 垃圾回收机制
    内置垃圾回收功能,开发者无需管理内存释放,专注于业务逻辑。


入门

开发环境

  1. 安装Go语言
    官方地址:go.dev/
    国内镜像:studygolang.com/dl

  2. 配置开发环境
    推荐的IDE:VS Code(需安装Go插件)或 Goland。


基础语法

变量与常量

变量

Go语言中的变量必须声明后才能使用。支持以下几种声明方式:

// 声明变量,自动推导类型
var a = "hello"

// 显式声明类型
var b, c int = 1, 2

// 简短声明(仅限函数内部)
d := true
常量

常量用const声明,值在定义时必须指定,且不可修改。

const pi = 3.14

// 使用iota枚举
const (
    a = iota // 0
    b        // 1
    c        // 2
)


运算符

算术运算符

+ - * / %

关系运算符

== != > < >= <=

逻辑运算符

&& || !

位运算符

& | ^ << >>

赋值运算符

= += -= *= /= %=


控制结构

条件语句

Go语言的if语句不需要括号:

if x > 10 {
    fmt.Println("x is greater than 10")
} else {
    fmt.Println("x is 10 or less")
}
循环语句

Go语言仅有for一种循环结构:

for i := 0; i < 5; i++ {
    fmt.Println(i)
}
  • 无限循环:for { ... }
  • 跳出循环:break
  • 跳过本次迭代:continue
switch语句

Go的switch不需要break

switch a {
case 1:
    fmt.Println("One")
case 2, 3:
    fmt.Println("Two or Three")
default:
    fmt.Println("Other")
}

数据结构

数组

数组是固定长度的序列,声明方式如下:

var a [5]int       // 长度为5的整型数组
b := [3]string{"a", "b", "c"} // 初始化数组
切片

切片是动态长度的数组,用make创建,支持append扩展:

s := make([]int, 3) // 长度为3的切片
s = append(s, 4, 5) // 动态扩展
Map

map是键值对结构,声明方式如下:

m := make(map[string]int)
m["key"] = 42
value, exists := m["key"]
Range

用于遍历数组、切片、map等:

for index, value := range nums {
    fmt.Println(index, value)
}

函数

  • 支持多个返回值:
func add(a int, b int) (int, int) {
    return a + b, a - b
}
  • 支持变长参数:
func sum(nums ...int) int {
    total := 0
    for _, num := range nums {
        total += num
    }
    return total
}

结构体

Go使用struct定义自定义数据类型:

type Person struct {
    Name string
    Age  int
}

p := Person{Name: "Alice", Age: 25}

指针

Go支持指针,但不允许指针运算:

x := 10
ptr := &x
fmt.Println(*ptr) // 解引用

常用功能

字符串操作
  • strings.Contains: 判断子字符串
  • strings.Join: 拼接字符串
  • strings.Split: 分割字符串
时间处理

使用time包:

import "time"
fmt.Println(time.Now()) // 当前时间
JSON处理

利用encoding/json进行序列化和反序列化:

import "encoding/json"

type Data struct {
    Key string `json:"key"`
}

jsonData, _ := json.Marshal(Data{Key: "value"})
fmt.Println(string(jsonData))

进程信息

通过osos/exec管理进程信息:

import "os"

args := os.Args // 获取命令行参数
os.Setenv("KEY", "VALUE")