Go语言基础语法详解及示例

更新时间:2024-05-28 18:19:54   人气:7329


Go 语言,由 Google 开发并在2009年正式发布的开源编程语⾔。它以其简洁的语法、高效的性能以及对并发和并行计算的良好支持而受到广大开发者的青睐。接下来将详细介绍 Go 语言的基础语法,并通过实例来帮助读者深入理解和掌握。

**1. 变量与常量**

在 Go 中定义变量可通过 `var` 关键字或直接初始化的方式:

go

// 使用 var 定义变量:
var name string = "Gopher"
var age int = 8 // 类型推断:若不指定类型,则会根据赋值自动判断为int

// 直接声明并初始化(推荐):
name := "Golang"
age := 10


同时,也提供关键字 `const` 来创建不可更改的常量:

go

const Pi float64 = 3.14159


**2. 数据类型**

Go 支持丰富的基本数据类型如整数(int),浮点(float32/float64) ,布尔(bool) 和字符串(string)等:

go

var x int // 整形
var y float64 // 浮点数
var z bool // 布尔值 (true 或 false)
var s string // 字符串


此外还包括数组(array), 切片(slice), 结构体(struct), 接口(interface) 等复杂的数据结构。

**3. 控制流程**

- **条件控制**: if, else-if, else 的使用类似于其他大多数程序设计语言。
go

if score > 90 {
fmt.Println("优秀")
} else if score >= 70 && score <= 90{
fmt.Println("良好")
} else {
fmt.Println("需要努力!")
}


- **循环控制**: for 循环是 Go 主要的迭代机制,可以替代 while 和 do...while,在 Go 中也有 range 功能用于遍历 slice/map/channel 等集合类型的元素。
go

for index, value := range myArray {
fmt.Printf("索引 %d 对应的值是:%v\n", index, value)
}

//无限循环示例
for {}


- **switch-case**: switch 提供了灵活且强大的多分支选择能力,case 后可跟随任意表达式而非仅限于常量或者枚举值。
go

grade := 'A'
switch grade {
case 'A', 'B':
fmt.Println("成绩优良!")
case 'C', 'D':
fmt.Println("合格范围.")
default:
fmt.Println("不及格,请加油哦~")
}


**4. 函数**

函数以 func 关键字开始,后跟其名称及其参数列表(如有),最后是一个返回值描述部分,如果无返回则省略该部分。

go

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

// 匿名函数可以直接被赋予一个变量然后调用
additionFunction := func(a, b int) int {
return a + b
}
result := additionFunction(3, 5)

fmt.Println(result) // 输出:8


**5. 并发特性 - Goroutine & Channel**

Go 内置轻量级线程 goroutines 实现协程功能,结合 channels 进行通信同步,这是它的特色之一。

启动一个新的goroutine非常简单,只需在其前面加上 go 即可:
go

go functionCall()

channel 是一种特殊的类型,可在不同的goroutine之间传递消息实现同步协同工作:
go

ch := make(chan int) // 创建通道
go send(ch) // 在新goroutine中发送数据到 channel ch
valueReceived := <- receive(ch) //从 channel接收数据

以上只是 Go 语言众多特性的冰山一角,但足以展示出这门语言的强大之处——优雅易读的代码风格、高效稳定的运行效率、原生良好的并发处理能力。理解这些基础知识之后,你便可以在实际项目实践中更得心应手地运用 Go 编写出高性能的应用程序和服务端软件。