Go语言的基础语法 | 青训营

104 阅读3分钟

Go是一种现代的、高效的、开源的编程语言,由Google开发。它的语法简洁、易于学习和使用,支持并发编程,特别适合构建网络应用和分布式系统。本篇文章将介绍Go语言的基础语法和常用特性,帮助初学者快速入门。

一、Go语言的基础语法

  1. 变量和常量

Go语言变量的声明格式是"var 变量名 类型",例如:

var age int
age = 26

也可以在声明时进行赋值:

var name string = "Tom"

变量的类型可以自动推导:

var height = 180.5

Go语言常量的声明格式是"const 常量名 类型 = 值",例如:

const pi float32 = 3.14
  1. 数据类型

Go语言支持的数据类型包括整数、浮点数、字符串、布尔值、数组、切片、字典、结构体等。

整数类型包括int、int8、int16、int32、int64和uint、uint8、uint16、uint32、uint64,其中int和uint是根据操作系统位数而定的。

浮点数类型包括float32和float64。

字符串类型用双引号表示。

布尔值类型用true和false表示。

数组类型是一组固定长度的同类型元素,格式为"[长度]类型"。

切片类型是一个动态数组,格式为"[]类型"。

字典类型是一个无序的键值对集合,格式为"map[键类型]值类型"。

结构体类型是一种自定义的数据类型,格式为"type 结构体名 struct {字段1 类型1;字段2 类型2;...}"。

  1. 控制语句

Go语言支持if、switch、for和select等控制语句。

if语句的格式为:

if 条件 {
  //执行语句
} else if 条件 {
  //执行语句
} else {
  //执行语句
}

switch语句的格式为:

switch 变量 {
  case1:
    //执行语句
  case2:
    //执行语句
  default:
    //执行语句
}

for语句可以用来实现循环,格式为:

for 初值; 条件; 增量 {
  //执行语句
}

也可以用for...range语句来遍历数组或切片:

for index, value := range arr {
  //执行语句
}

select语句用于等待多个通道的输入,并响应第一个到达的通道,格式为:

select {
  case ch1 <- true:
    //执行语句
  case <-ch2:
    //执行语句
  default:
    //执行语句
}
  1. 函数

Go语言的函数声明格式为"func 函数名(参数) 返回值类型 {函数体}",例如:

func add(a, b int) int {
  return a + b
}

Go语言还支持多返回值函数、匿名函数和闭包等特性。

二、Go语言的常用特性

  1. 并发编程

Go语言提供了goroutine和channel两个特性,可以方便地进行并发编程。

goroutine是一种轻量级的线程,多个goroutine可以同时运行在同一个线程中,通过go关键字启动:

go add(a, b)

channel是一种通信机制,用于在goroutine之间传递数据。channel有发送和接收两个操作,格式为"ch <- data"和"data := <-ch":

ch := make(chan int)
go func() {
  ch <- 10
}()
data := <- ch
  1. 包管理

Go语言的包管理工具是go mod。它可以自动下载和管理第三方包,使得项目管理更加简单和可靠。

使用go mod可以创建和管理依赖:

go mod init myproject
go mod tidy

使用go run可以运行程序:

go run main.go

使用go build可以编译可执行文件:

go build -o myapp main.go
  1. 调试工具

Go语言的调试工具包括go vet、go test、go profile和go trace等。

go vet用于静态检查代码中的错误:

go vet .

go test用于单元测试:

go test .

go profile可以生成程序的性能分析报告:

go build -o myapp main.go
go test -bench=. -cpuprofile=cpu.out
go tool pprof myapp cpu.out

go trace可以生成程序的运行时跟踪信息:

go build -o myapp main.go
go test -trace=trace.out
go tool trace trace.out

三、Go语言的示例程序

以下是一个简单的Go语言示例程序,用于计算斐波那契数列:

package main

import "fmt"

func fibonacci(n int) int {
  if n <= 1 {
    return n
  }
  return fibonacci(n-1) + fibonacci(n-2)
}

func main() {
  for i := 0; i <= 10; i++ {
    fmt.Printf("%d ", fibonacci(i))
  }
}

运行结果为:

0 1 1 2 3 5 8 13 21 34 55