Golang中的切片、映射与面向对象编程
切片(Slices):灵活的动态数组
不知道大家在使用数组时是否曾觉得数组不太灵活。golang使用切片很好的解决了这个问题
切片是Go中一种重要的数据结构,它提供了对数组的动态、灵活的操作。与传统数组相比,切片具有变长特性,允许动态地增加、删除和修改元素。切片由指向底层数组的指针、长度和容量三部分组成。
package main
import "fmt"
func main() { // 创建切片
nums := []int{1, 2, 3, 4, 5}
// 切片操作
fmt.Println(nums[1:3]) // 输出: [2 3]
// 添加元素
nums = append(nums, 6)
// 修改元素
nums[0] = 0
// 遍历切片
for _, num := range nums {
fmt.Println(num)
} }
映射(Maps):灵活的键值对存储
映射是Go中的另一个重要数据结构,它提供了一种键值对的存储方式。映射允许你使用任何可比较类型作为键,并与之关联一个值。映射在查找和更新操作上非常高效。
map时key-value形式的数据,其中key只能为基本数据类型。
代码示例
package main
import "fmt"
func main() {
// 创建映射
person := map[string]int{
"Alice": 25,
"Bob": 30,
}
// 添加/更新元素
person["Charlie"] = 28
// 查找元素
age, exists := person["Alice"]
if exists {
fmt.Println("Alice's age:", age)
} else {
fmt.Println("Alice not found")
}
// 删除元素
delete(person, "Bob")
// 遍历映射
for name, age := range person {
fmt.Println(name, "is", age, "years old")
}
}
面向对象编程:封装与方法
虽然Go并不是一门纯粹的面向对象编程语言,但它支持面向对象的编程范式。在Go中,通过结构体(struct)和方法(method)来实现封装和抽象。
代码示例
package main
import "fmt"
// 定义结构体
type Rectangle struct {
Width float64
Height float64
}
// 定义方法 func (r Rectangle) Area() float64 { return r.Width * r.Height }
func main() {
// 创建结构体实例
rect := Rectangle{Width: 10, Height: 5}
// 调用方法
area := rect.Area()
fmt.Println("Rectangle's area:", area) }