GO语言基础1 | 豆包MarsCode AI刷题

42 阅读3分钟

Go语言(通常称为Golang)是由Google于2007年发起开发,2009年正式发布的一门静态类型、编译型语言。Go语言的设计初衷是为了简化软件开发,特别是针对大规模分布式系统和云计算应用,具有高效、简洁、并发等优点。Go语言广泛应用于云服务、网络编程、微服务等领域。

本文将详细介绍Go语言的核心语法,包括基本语法、数据类型、控制结构、函数和并发编程等,旨在帮助读者全面理解Go语言的基础知识。


1. 基本语法

1.1 程序结构

Go语言的程序由一个或多个包(package)组成。每个Go程序必须包含一个main包,并且main包中的main函数是程序的入口。

goCopy Code
package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}
  • package main:声明当前文件属于main包,表示这是一个可执行程序的入口。
  • import "fmt":引入Go的标准库中的fmt包,用于格式化输出。
  • func main():定义main函数,是程序的执行起点。

1.2 变量声明与赋值

Go语言的变量声明使用var关键字,支持显式和隐式两种方式:

goCopy Code
var x int = 10    // 显式声明
var y = 20        // 隐式声明,类型推断
z := 30           // 另一种简化形式,自动推断类型,必须在函数内使用
  • var x int:声明变量x,并指定其类型为int
  • :=:用于在函数内部声明并初始化变量,Go会根据右侧的值自动推断类型。

1.3 常量声明

常量声明使用const关键字:

goCopy Code
const Pi = 3.14159

Go中的常量只能是基本类型,如数字、字符、字符串等,不能是复合类型。


2. 数据类型

Go语言提供了多种数据类型,包括基本类型和复合类型。

2.1 基本数据类型

Go语言支持的基本数据类型包括:

  • 整型:intint8int16int32int64,以及对应的无符号类型 uintuint8uint16uint32uint64
  • 浮点型:float32float64
  • 布尔型:bool
  • 字符串型:string,用于表示一系列字符。
  • 字符型:rune(等同于int32,用于表示Unicode字符)。

2.2 数组与切片

Go中的数组是固定大小的类型,定义数组时需要指定大小:

goCopy Code
var arr [5]int  // 定义一个长度为5的整数数组
arr[0] = 10     // 给数组元素赋值

切片(slice)是Go语言中更灵活的数组类型,它不固定大小,具有动态变化的能力:

goCopy Code
s := []int{1, 2, 3, 4}
s = append(s, 5)  // 使用append添加元素

切片的底层其实是一个数组,但它包含一个指向数组的指针、长度和容量。

2.3 字典(Map)

Go语言中的字典类型为map,是一种无序的键值对集合:

goCopy Code
m := make(map[string]int)  // 创建一个空的map,键为string类型,值为int类型
m["age"] = 30              // 插入数据
fmt.Println(m["age"])       // 输出30

2.4 结构体(Struct)

结构体是Go语言的复合数据类型,用于将多个不同类型的数据组合在一起:

goCopy Code
type Person struct {
    Name string
    Age  int
}

p := Person{Name: "Alice", Age: 30}
fmt.Println(p.Name)  // 输出:Alice

结构体的字段可以是任意类型,Go语言通过type关键字定义新的类型。