> For the complete documentation index, see [llms.txt](https://denglj.gitbook.io/essential-go/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://denglj.gitbook.io/essential-go/02-basic-types/integers.md).

# 整型

Go语言有固定长度的有符号和无符号整数类型：

* `int8`, `uint8`&#x20;
* `byte`，是`uint8`的别名
* `int16`, `uint16`
* `int32`, `uint32`
* `rune`, 是`int32`的别名
* `int64`, `uint64`

还有依赖于CPU架构的整型：

* `int`，在32为处理器上表示`int32`，在64位处理器上表示`int64`
* `uint`，在32位处理器上是`uint32`，在64位处理器上是`uint64`

整数类型的[零值](/essential-go/02-basic-types/ling-zhi.md)是0。

### 用 `strconv.Itoa` 实现`int`转`string`

{% tabs %}
{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"strconv"
)

func main() {
	var i1 int = -38
	fmt.Printf("i1: %s\n", strconv.Itoa(i1))

	var i2 int32 = 148
	fmt.Printf("i2: %s\n", strconv.Itoa(int(i2)))
}

```

{% endtab %}

{% tab title="Output" %}

```
i1: -38
i2: 148
```

{% endtab %}
{% endtabs %}

### 用`fmt.Sprintf`实现`int`转`string`

{% tabs %}
{% tab title="Go" %}

```go
package main

import (
	"fmt"
)

func main() {
	var i1 int = -38
	s1 := fmt.Sprintf("%d", i1)
	fmt.Printf("i1: %s\n", s1)

	var i2 int32 = 148
	s2 := fmt.Sprintf("%d", i2)
	fmt.Printf("i2: %s\n", s2)
}

```

{% endtab %}

{% tab title="Output" %}

```
i1: -38
i2: 148
```

{% endtab %}
{% endtabs %}

### 用`strconv.Atoi`实现`string`转`int`

{% tabs %}
{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"log"
	"strconv"
)

func main() {
	s := "-48"
	i1, err := strconv.Atoi(s)
	if err != nil {
		log.Fatalf("strconv.Atoi() failed with %s\n", err)
	}
	fmt.Printf("i1: %d\n", i1)
}
```

{% endtab %}

{% tab title="Output" %}

```
i1: -48
```

{% endtab %}
{% endtabs %}

### 用`fmt.Sscanf`实现`string`转`int`

{% tabs %}
{% tab title="Go" %}

```go
package main

import (
	"fmt"
	"log"
)

func main() {
	s := "348"
	var i int
	_, err := fmt.Sscanf(s, "%d", &i)
	if err != nil {
		log.Fatalf("fmt.Sscanf failed with '%s'\n", err)
	}
	fmt.Printf("i1: %d\n", i)
}
```

{% endtab %}

{% tab title="Output" %}

```
i1: 348
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}

#### 译者注

`strconv`是处理字符串转换的标准库，它是 string convert 的缩写，`Itoa`意为 Int to A，int表示整型，A为第一个英文字母泛指字符(串)。
{% endhint %}
