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语言支持的基本数据类型包括:
- 整型:
int、int8、int16、int32、int64,以及对应的无符号类型uint、uint8、uint16、uint32、uint64。 - 浮点型:
float32、float64。 - 布尔型:
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关键字定义新的类型。