Go(又称Golang)是由Google开发的一种编译型、并发型、具有垃圾回收功能的编程语言。自2009年推出以来,凭借其简洁的语法、强大的并发支持和高性能,Go语言迅速在云计算、微服务、系统编程等领域崭露头角。
一、基础语法
1. 环境搭建
- 安装Go:访问Go官方网站下载并安装适用于你操作系统的Go版本。
- 设置环境变量:确保
GOPATH和GOROOT正确设置,并将Go的bin目录添加到系统的PATH环境变量中。 - 验证安装:在终端输入
go version,查看Go版本信息,确认安装成功。
2. Hello, World!
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
- 包声明:每个Go文件都以
package关键字开始,声明该文件所属的包。 - 导入包:使用
import关键字导入标准库或其他包。 - 函数:
main函数是程序的入口点。
3. 变量和常量
-
变量声明:
var a int var b, c int = 1, 2 d := 3 // 简短声明,仅适用于函数内部 -
常量:
const Pi = 3.14
4. 数据类型
Go语言支持多种数据类型,包括整型(int、uint等)、浮点型(float32、float64)、布尔型(bool)、字符串(string)等。
5. 控制结构
-
条件语句:
if x > 0 { fmt.Println("x is positive") } else if x == 0 { fmt.Println("x is zero") } else { fmt.Println("x is negative") } -
循环:
for i := 0; i < 10; i++ { fmt.Println(i) }Go还支持
for range循环,用于遍历数组、切片、映射或字符串。
二、常用特性
1. 并发编程
Go语言原生支持并发编程,通过goroutine和channel实现。
-
goroutine:轻量级线程,由Go运行时管理。
go func() { fmt.Println("Hello from goroutine") }() -
channel:用于在goroutine之间传递数据,实现同步。
ch := make(chan int) go func() { ch <- 42 }() value := <-ch fmt.Println(value)
2. 切片(Slice)
切片是动态数组,比数组更灵活。
s := []int{1, 2, 3}
s = append(s, 4, 5) // 动态添加元素
3. 映射(Map)
映射是键值对的集合。
m := make(map[string]int)
m["age"] = 30
fmt.Println(m["age"])
4. 接口(Interface)
Go语言的接口是隐式实现的,只需满足接口中的方法签名即可。
type Speaker interface {
Speak() string
}
type Dog struct{}
func (d Dog) Speak() string {
return "Woof!"
}
func main() {
var s Speaker = Dog{}
fmt.Println(s.Speak())
}
5. 错误处理
Go语言通过内置的错误类型error处理错误。
func mightFail() (string, error) {
return "", errors.New("something went wrong")
}
func main() {
result, err := mightFail()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Result:", result)
}
6. 格式化输入输出
Go语言的fmt包提供了丰富的格式化输入输出功能。
name := "Alice"
age := 30
fmt.Printf("Name: %s, Age: %d\n", name, age)