Go语言基础语法
Go语言的基础语法包括以下几个方面:
1.1包和模块:Go语言使用包(package)来组织代码,每个Go程序都包含一个main包。学习Go语言时需要了解如何引入和使用其他包,以及如何创建自己的包
1.2基本数据类型:
Go语言之支持数值型,布尔型,字符型和字符型等基本数据类型。其中,数值性整数型(int,int8,int16,int32,int64)和浮点型(float32.float64)
var i int=100
var a bool=false
var b float32=3,14
var c string=“hello”
1.3变量的声明与赋值:
var x int //声明变量 x
x=10 //赋值
x:=100 //也可以用:=进行变量声明和赋值。
变量必须先声明后使用,变量的类型在声明世必须指定,可用var关键字声明,也可以用:=运算符。
1.4控制结构:
Go语言支持if,for,switch和select等控制结构,if和switch结构用于条件判断,for用于循环(不需要带括号),select结构用于多路复用。
// if 结构
if x > 0 {
fmt.Println("x is positive")
} else if x < 0 {
fmt.Println("x is negative")
} else {
fmt.Println("x is zero")
}
// for 结构
for i := 0; i < 10; i++ {
fmt.Println(i)
}
// switch 结构
switch x {
case 1:
fmt.Println("x is 1")
case 2:
fmt.Println("x is 2")
default:
fmt.Println("x is not 1 or 2")
}
// select 结构
select {
case <-ch1:
fmt.Println("received from ch1")
case <-ch2:
fmt.Println("received from ch2")
}
1.5结构体和方法:
Go 语言支持结构体类型和方法。结构体用于封装多个数据成员,方法用于对结构体进行操作。
type Point struct {
X, Y int
}
func (p Point) Distance() float64 {
return math.Sqrt(float64(p.X*p.X + p.Y*p.Y))
}
p := Point{X: 3, Y: 4} // 创建一个 Point 结构体实例
d := p.Distance()
- 结构体解释:将一个或多个变量组合到一起,形成新的类型.这个类型就是结构体
- Go语言中的结构体和C++结构体有点类似,而Java或C#中类本质就是结构体
- 结构体是值类型
- 结构体定义语法
1.6数组和切片:
Go 语言中的数组是一种固定长度的数据结构,可以通过下标访问数组元素。切片是对数组的一种封装,可以动态地增加或删除元素。
// 数组
var a [3]int // 声明一个长度为 3 的整数型数组
a[0] = 1 // 将第一个元素赋值为 1
a[1] = 2 // 将第二个元素赋值为 2
a[2] = 3 // 将第三个元素赋值为 3
// 切片
s := []int{1, 2, 3, 4, 5} // 创建一个包含 5 个元素的整数型切片
s = append(s, 6) // 向切片中添加一个元素 6
1.7指针和引用类型:
Go 语言支持指针类型和引用类型。指针类型用于存储变量的内存地址,可以通过 * 运算符访问指针指向的值。引用类型是一种动态分配内存的数据类型,包括切片、映射和通道等。
type Animal interface {
Speak() string
}
// 结构体实现接口
type Dog struct{}
func (d Dog) Speak() string {
return "Woof!"
}
// 类型断言
var a Animal = Dog{}
d, ok := a.(Dog)
if ok {
fmt.Println(d.Speak()) // 输出 Woof!
}
常用特性解析
1.并发编程:Go语言内置支持并发编程,通过goroutine和channel来实现。学习Go语言时需要了解如何创建和管理goroutine,以及如何使用channel进行通信和同步。
func worker() {
for i := 0; i < 10; i++ {
fmt.Println("working...")
time.Sleep(1 * time.Second)
}
}
go worker() // 启动一个 goroutine
// 通道示例
ch := make(chan int) // 创建一个整数型通道
go func() {
ch <- 1 // 发送一个整数 1 到通道中
}()
x := <-ch // 从通道中取出一个整数
fmt.Println(x) // 输出 1
- 垃圾回收机制:Go语言具备自动内存管理的垃圾回收机制,开发者无需手动管理内存,减轻了开发负担,提高了开发效率。 3.快速编译:Go语言编译速度快,可以快速生成可执行文件,方便开发者进行测试和部署。