Go语言基础语法详解
Go语言作为一门简洁高效的编程语言,以其独特的语法风格和并发支持成为开发者喜爱的语言之一。本文将带你逐步了解Go语言的基础语法,覆盖程序结构、变量与常量、数据类型以及运算符的使用,为深入学习Go语言奠定坚实的基础。
1. Go语言程序结构
一个Go语言程序的基础结构相对简单,通常由包声明、导入依赖包、函数组成。最基本的结构如下:
main 函数与包导入
go
package main
import "fmt" // 导入fmt包用于输入输出
func main() {
fmt.Println("Hello, Go!")
}
package main
:每个Go程序的入口点必须是package main
,这告诉编译器这是一个可执行的程序。import "fmt"
:导入Go的标准库fmt
,用来格式化输入输出。导入的包名称必须是双引号包围的包名,标准库包含众多常用包。func main()
:Go程序的主入口函数,main
函数没有参数,程序从这里开始执行。
2. 数据类型
Go是一门静态类型的语言,意味着每个变量的类型在编译时必须是已知的。Go支持多种数据类型,主要分为基本类型和复合类型。
基本类型
- 整数 :包括有符号整数和无符号整数,分别有
int
、int8
、int16
、int32
、int64
及其对应的无符号版本uint
、uint8
等。 - 浮点数 :
float32
和float64
。 - 布尔值 :
bool
类型,只有两个值true
和false
。 - 字符串 :
string
,表示Unicode字符序列。
go
var i int = 10
var f float64 = 3.14
var b bool = true
var s string = "Hello"
复合类型
-
数组:定长、同质元素序列。
govar arr [5]int = [5]int{1, 2, 3, 4, 5}
-
切片:动态大小、同质元素的序列,类似动态数组。
govar slice []int = []int{1, 2, 3}
-
结构体:一组字段的集合,类似类但没有继承。
gotype Person struct { Name string Age int }
-
映射(map):键值对的无序集合。
govar m map[string]int = map[string]int{"one": 1, "two": 2}
3. 变量与常量
Go中的变量声明可以通过 var
关键字,也可以使用简洁的短变量声明。常量则使用 const
关键字。
var 声明变量
var
是 Go 中最常见的声明变量的方式,可以显式指定类型,也可以通过初始化推导类型。
go
var a int // 声明一个整型变量
var b string // 声明一个字符串变量
a = 10
b = "Go语言"
短变量声明 :=
Go支持在函数内使用 :=
进行变量的简洁声明,编译器会自动推断变量类型:
go
c := 20 // 声明并初始化整型变量
name := "Alice" // 声明并初始化字符串变量
注意::=
只能在函数体内部使用,不能用于全局变量的声明。
常量 const
常量使用 const
关键字声明,常量的值在编译时确定,不可修改:
go
const Pi = 3.14
const Greeting = "Hello, Go!"
常量只能是布尔值、数字、字符串类型。
4. 基本运算符
Go语言提供了丰富的运算符,涵盖了常见的算术运算、逻辑运算以及关系运算。
算术运算符
Go支持常见的算术运算符,如加减乘除、取余等:
运算符 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
go
x := 10
y := 3
fmt.Println(x + y) // 输出: 13
fmt.Println(x - y) // 输出: 7
fmt.Println(x * y) // 输出: 30
fmt.Println(x / y) // 输出: 3
fmt.Println(x % y) // 输出: 1
逻辑运算符
逻辑运算符主要用于布尔值的组合:
运算符 | 描述 |
---|---|
&& | 逻辑与 |
|| | 逻辑或 |
! | 逻辑非 |
go
a := true
b := false
fmt.Println(a && b) // 输出: false
fmt.Println(a || b) // 输出: true
fmt.Println(!a) // 输出: false
关系运算符
用于比较两个值,返回布尔值:
运算符 | 描述 |
---|---|
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
go
x := 5
y := 10
fmt.Println(x == y) // 输出: false
fmt.Println(x != y) // 输出: true
fmt.Println(x > y) // 输出: false
fmt.Println(x < y) // 输出: true
扩展阅读:
- Go语言官方网站
- A Tour of Go - Go语言官方交互式教程
- Effective Go - Go代码风格指南