# 切片基本操作

URL: https://caijiao.org/go/02-composite/02-slice-basics
Source: docs/go/02-composite/02-slice-basics.md
Description: 本节介绍 Go 语言中切片的基本操作，包括切片的定义、访问、修改及其与数组的区别。

切片是基于数组的动态数据结构，长度可变且更灵活，是 Go 中常用的数据类型。

## 1. 切片定义

从数组或切片创建切片：

```go
arr := [5]int{1, 2, 3, 4, 5}
slice := arr[1:4]  // 包含索引1到3的元素
````

直接声明切片：

```go
var s []int
```

用字面量初始化：

```go
s := []int{10, 20, 30}
```

## 2. 访问与修改

通过索引访问和修改切片元素：

```go
fmt.Println(slice[0])  // 输出 2
slice[1] = 100
```

## 3. 切片长度与容量

* `len(slice)` 返回切片长度（元素数量）
* `cap(slice)` 返回切片容量（从起始元素到底层数组末尾的长度）

```go
fmt.Println(len(slice))  // 3
fmt.Println(cap(slice))  // 4
```

## 4. 切片扩展（append）

使用 `append` 向切片添加元素，可能导致底层数组扩容：

```go
s = append(s, 40, 50)
```

---

切片提供了灵活且高效的序列操作，是 Go 编程中不可或缺的工具。
