# 空白标识符

为了避免错误，Go编译器不允许存在未使用的变量。

但是，有些场景下，您不需要把一个值存入一个变量。

在这些场景下，您就可以使用“空白标识符”`_`来接收一个变量的分配，并丢弃该变量。

空白标识符可以被赋值任何类型的值，它经常被用在有多个返回值的函数。

### 多返回值

```go
func SumProduct(a, b int) (int, int) {
	return a + b, a * b
}

func main() {
	// 只需要sum
	sum, _ := SumProduct(1, 2) // 乘积会被丢弃
	fmt.Println(sum)           // -> 3
}
```

### 跟`range`一起用

```go
func main() {
	pets := []string{"dog", "cat", "fish"}

	// range 会同时返回index和value
	// 但有时候我们只想用其中之一
	for _, pet := range pets {
		fmt.Println(pet)
	}
}
```

{% hint style="info" %}

#### 译者注

简言之，空白标识符就是个特殊变量名，但凡赋给这个变量名的变量值都会被丢弃。
{% endhint %}
