# package strconv
`import "strconv"`
strconv包实现了基本数据类型和其字符串表示的相互转换。
## Index
* [Constants](#pkg-constants)
* [Variables](#pkg-variables)
* [type NumError](#NumError)
* [func (e \*NumError) Error() string](#NumError.Error)
* [func IsPrint(r rune) bool](#IsPrint)
* [func CanBackquote(s string) bool](#CanBackquote)
* [func Quote(s string) string](#Quote)
* [func QuoteToASCII(s string) string](#QuoteToASCII)
* [func QuoteRune(r rune) string](#QuoteRune)
* [func QuoteRuneToASCII(r rune) string](#QuoteRuneToASCII)
* [func Unquote(s string) (t string, err error)](#Unquote)
* [func UnquoteChar(s string, quote byte) (value rune, multibyte bool, tail string, err error)](#UnquoteChar)
* [func ParseBool(str string) (value bool, err error)](#ParseBool)
* [func ParseInt(s string, base int, bitSize int) (i int64, err error)](#ParseInt)
* [func ParseUint(s string, base int, bitSize int) (n uint64, err error)](#ParseUint)
* [func ParseFloat(s string, bitSize int) (f float64, err error)](#ParseFloat)
* [func FormatBool(b bool) string](#FormatBool)
* [func FormatInt(i int64, base int) string](#FormatInt)
* [func FormatUint(i uint64, base int) string](#FormatUint)
* [func FormatFloat(f float64, fmt byte, prec, bitSize int) string](#FormatFloat)
* [func Atoi(s string) (i int, err error)](#Atoi)
* [func Itoa(i int) string](#Itoa)
* [func AppendBool(dst []byte, b bool) []byte](#AppendBool)
* [func AppendInt(dst []byte, i int64, base int) []byte](#AppendInt)
* [func AppendUint(dst []byte, i uint64, base int) []byte](#AppendUint)
* [func AppendFloat(dst []byte, f float64, fmt byte, prec int, bitSize int) []byte](#AppendFloat)
* [func AppendQuote(dst []byte, s string) []byte](#AppendQuote)
* [func AppendQuoteToASCII(dst []byte, s string) []byte](#AppendQuoteToASCII)
* [func AppendQuoteRune(dst []byte, r rune) []byte](#AppendQuoteRune)
* [func AppendQuoteRuneToASCII(dst []byte, r rune) []byte](#AppendQuoteRuneToASCII)
### Examples
* [Unquote](#example-Unquote)
## Constants
```
const IntSize = intSize
```
IntSize是int或uint类型的字位数。
## Variables
```
var ErrRange = errors.New("value out of range")
```
ErrRange表示超出目标类型表示范围。
```
var ErrSyntax = errors.New("invalid syntax")
```
ErrSyntax表示不符合目标类型语法。
## type [NumError](https://github.com/golang/go/blob/master/src/strconv/atoi.go#L16 "View Source")
```
type NumError struct {
Func string // 失败的函数(ParseBool、ParseInt、ParseUint、ParseFloat)
Num string // 输入的字符串
Err error // 失败的原因(ErrRange、ErrSyntax)
}
```
NumError表示一次失败的转换。
### func (\*NumError) [Error](https://github.com/golang/go/blob/master/src/strconv/atoi.go#L22 "View Source")
```
func (e *NumError) Error() string
```
## func [IsPrint](https://github.com/golang/go/blob/master/src/strconv/quote.go#L402 "View Source")
```
func IsPrint(r rune) bool
```
返回一个字符是否是可打印的,和unicode.IsPrint一样,r必须是:字母(广义)、数字、标点、符号、ASCII空格。
## func [CanBackquote](https://github.com/golang/go/blob/master/src/strconv/quote.go#L145 "View Source")
```
func CanBackquote(s string) bool
```
返回字符串s是否可以不被修改的表示为一个单行的、没有空格和tab之外控制字符的反引号字符串。
## func [Quote](https://github.com/golang/go/blob/master/src/strconv/quote.go#L90 "View Source")
```
func Quote(s string) string
```
返回字符串s在go语法下的双引号字面值表示,控制字符、不可打印字符会进行转义。(如\t,\n,\xFF,\u0100)
## func [QuoteToASCII](https://github.com/golang/go/blob/master/src/strconv/quote.go#L103 "View Source")
```
func QuoteToASCII(s string) string
```
返回字符串s在go语法下的双引号字面值表示,控制字符和不可打印字符、非ASCII字符会进行转义。
## func [QuoteRune](https://github.com/golang/go/blob/master/src/strconv/quote.go#L116 "View Source")
```
func QuoteRune(r rune) string
```
返回字符r在go语法下的单引号字面值表示,控制字符、不可打印字符会进行转义。(如\t,\n,\xFF,\u0100)
## func [QuoteRuneToASCII](https://github.com/golang/go/blob/master/src/strconv/quote.go#L131 "View Source")
```
func QuoteRuneToASCII(r rune) string
```
返回字符r在go语法下的单引号字面值表示,控制字符、不可打印字符、非ASCII字符会进行转义。
## func [Unquote](https://github.com/golang/go/blob/master/src/strconv/quote.go#L294 "View Source")
```
func Unquote(s string) (t string, err error)
```
函数假设s是一个单引号、双引号、反引号包围的go语法字符串,解析它并返回它表示的值。(如果是单引号括起来的,函数会认为s是go字符字面值,返回一个单字符的字符串)
Example
```
test := func(s string) {
t, err := strconv.Unquote(s)
if err != nil {
fmt.Printf("Unquote(%#v): %v\n", s, err)
} else {
fmt.Printf("Unquote(%#v) = %v\n", s, t)
}
}
s := `cafe\u0301`
// If the string doesn't have quotes, it can't be unquoted.
test(s) // invalid syntax
test("`" + s + "`")
test(`"` + s + `"`)
test(`'\u00e9'`)
```
Output:
```
Unquote("cafe\\u0301"): invalid syntax
Unquote("`cafe\\u0301`") = cafe\u0301
Unquote("\"cafe\\u0301\"") = café
Unquote("'\\u00e9'") = é
```
## func [UnquoteChar](https://github.com/golang/go/blob/master/src/strconv/quote.go#L182 "View Source")
```
func UnquoteChar(s string, quote byte) (value rune, multibyte bool, tail string, err error)
```
函数假设s是一个表示字符的go语法字符串,解析它并返回四个值:
```
1) value,表示一个rune值或者一个byte值
2) multibyte,表示value是否是一个多字节的utf-8字符
3) tail,表示字符串剩余的部分
4) err,表示可能存在的语法错误
```
quote参数为单引号时,函数认为单引号是语法字符,不接受未转义的单引号;双引号时,函数认为双引号是语法字符,不接受未转义的双引号;如果是零值,函数把单引号和双引号当成普通字符。
## func [ParseBool](https://github.com/golang/go/blob/master/src/strconv/atob.go#L10 "View Source")
```
func ParseBool(str string) (value bool, err error)
```
返回字符串表示的bool值。它接受1、0、t、f、T、F、true、false、True、False、TRUE、FALSE;否则返回错误。
## func [ParseInt](https://github.com/golang/go/blob/master/src/strconv/atoi.go#L150 "View Source")
```
func ParseInt(s string, base int, bitSize int) (i int64, err error)
```
返回字符串表示的整数值,接受正负号。
base指定进制(2到36),如果base为0,则会从字符串前置判断,"0x"是16进制,"0"是8进制,否则是10进制;
bitSize指定结果必须能无溢出赋值的整数类型,0、8、16、32、64 分别代表 int、int8、int16、int32、int64;返回的err是\*NumErr类型的,如果语法有误,err.Error = ErrSyntax;如果结果超出类型范围err.Error = ErrRange。
## func [ParseUint](https://github.com/golang/go/blob/master/src/strconv/atoi.go#L48 "View Source")
```
func ParseUint(s string, base int, bitSize int) (n uint64, err error)
```
ParseUint类似ParseInt但不接受正负号,用于无符号整型。
## func [ParseFloat](https://github.com/golang/go/blob/master/src/strconv/atof.go#L533 "View Source")
```
func ParseFloat(s string, bitSize int) (f float64, err error)
```
解析一个表示浮点数的字符串并返回其值。
如果s合乎语法规则,函数会返回最为接近s表示值的一个浮点数(使用IEEE754规范舍入)。bitSize指定了期望的接收类型,32是float32(返回值可以不改变精确值的赋值给float32),64是float64;返回值err是\*NumErr类型的,语法有误的,err.Error=ErrSyntax;结果超出表示范围的,返回值f为±Inf,err.Error= ErrRange。
## func [FormatBool](https://github.com/golang/go/blob/master/src/strconv/atob.go#L21 "View Source")
```
func FormatBool(b bool) string
```
根据b的值返回"true"或"false"。
## func [FormatInt](https://github.com/golang/go/blob/master/src/strconv/itoa.go#L18 "View Source")
```
func FormatInt(i int64, base int) string
```
返回i的base进制的字符串表示。base 必须在2到36之间,结果中会使用小写字母'a'到'z'表示大于10的数字。
## func [FormatUint](https://github.com/golang/go/blob/master/src/strconv/itoa.go#L10 "View Source")
```
func FormatUint(i uint64, base int) string
```
是FormatInt的无符号整数版本。
## func [FormatFloat](https://github.com/golang/go/blob/master/src/strconv/ftoa.go#L44 "View Source")
```
func FormatFloat(f float64, fmt byte, prec, bitSize int) string
```
函数将浮点数表示为字符串并返回。
bitSize表示f的来源类型(32:float32、64:float64),会据此进行舍入。
fmt表示格式:'f'(-ddd.dddd)、'b'(-ddddp±ddd,指数为二进制)、'e'(-d.dddde±dd,十进制指数)、'E'(-d.ddddE±dd,十进制指数)、'g'(指数很大时用'e'格式,否则'f'格式)、'G'(指数很大时用'E'格式,否则'f'格式)。
prec控制精度(排除指数部分):对'f'、'e'、'E',它表示小数点后的数字个数;对'g'、'G',它控制总的数字个数。如果prec 为-1,则代表使用最少数量的、但又必需的数字来表示f。
## func [Atoi](https://github.com/golang/go/blob/master/src/strconv/atoi.go#L195 "View Source")
```
func Atoi(s string) (i int, err error)
```
Atoi是ParseInt(s, 10, 0)的简写。
## func [Itoa](https://github.com/golang/go/blob/master/src/strconv/itoa.go#L24 "View Source")
```
func Itoa(i int) string
```
Itoa是FormatInt(i, 10) 的简写。
## func [AppendBool](https://github.com/golang/go/blob/master/src/strconv/atob.go#L30 "View Source")
```
func AppendBool(dst []byte, b bool) []byte
```
等价于append(dst, FormatBool(b)...)
## func [AppendInt](https://github.com/golang/go/blob/master/src/strconv/itoa.go#L30 "View Source")
```
func AppendInt(dst []byte, i int64, base int) []byte
```
等价于append(dst, FormatInt(I, base)...)
## func [AppendUint](https://github.com/golang/go/blob/master/src/strconv/itoa.go#L37 "View Source")
```
func AppendUint(dst []byte, i uint64, base int) []byte
```
等价于append(dst, FormatUint(I, base)...)
## func [AppendFloat](https://github.com/golang/go/blob/master/src/strconv/ftoa.go#L50 "View Source")
```
func AppendFloat(dst []byte, f float64, fmt byte, prec int, bitSize int) []byte
```
等价于append(dst, FormatFloat(f, fmt, prec, bitSize)...)
## func [AppendQuote](https://github.com/golang/go/blob/master/src/strconv/quote.go#L96 "View Source")
```
func AppendQuote(dst []byte, s string) []byte
```
等价于append(dst, Quote(s)...)
## func [AppendQuoteToASCII](https://github.com/golang/go/blob/master/src/strconv/quote.go#L109 "View Source")
```
func AppendQuoteToASCII(dst []byte, s string) []byte
```
等价于append(dst, QuoteToASCII(s)...)
## func [AppendQuoteRune](https://github.com/golang/go/blob/master/src/strconv/quote.go#L123 "View Source")
```
func AppendQuoteRune(dst []byte, r rune) []byte
```
等价于append(dst, QuoteRune(r)...)
## func [AppendQuoteRuneToASCII](https://github.com/golang/go/blob/master/src/strconv/quote.go#L138 "View Source")
```
func AppendQuoteRuneToASCII(dst []byte, r rune) []byte
```
等价于append(dst, QuoteRuneToASCII(r)...)
- 库
- package achive
- package tar
- package zip
- package bufio
- package builtin
- package bytes
- package compress
- package bzip2
- package flate
- package gzip
- package lzw
- package zlib
- package container
- package heap
- package list
- package ring
- package crypto
- package aes
- package cipher
- package des
- package dsa
- package ecdsa
- package elliptic
- package hmac
- package md5
- package rand
- package rc4
- package rsa
- package sha1
- package sha256
- package sha512
- package subtle
- package tls
- package x509
- package pkix
- package database
- package sql
- package driver
- package encoding
- package ascii85
- package asn1
- package base32
- package base64
- package binary
- package csv
- package gob
- package hex
- package json
- package pem
- package xml
- package errors
- package expvar
- package flag
- package fmt
- package go
- package doc
- package format
- package parser
- package printer
- package hash
- package adler32
- package crc32
- package crc64
- package fnv
- package html
- package template
- package image
- package color
- package palette
- package draw
- package gif
- package jpeg
- package png
- package index
- package suffixarray
- package io
- package ioutil
- package log
- package syslog
- package math
- package big
- package cmplx
- package rand
- package mime
- package multipart
- package net
- package http
- package cgi
- package cookiejar
- package fcgi
- package httptest
- package httputil
- package pprof
- package mail
- package rpc
- package jsonrpc
- package smtp
- package textproto
- package url
- package os
- package exec
- package signal
- package user
- package path
- package filepath
- package reflect
- package regexp
- package runtime
- package cgo
- package debug
- package pprof
- package race
- package sort
- package strconv
- package strings
- package sync
- package atomic
- package text
- package scanner
- package tabwriter
- package template
- package time
- package unicode
- package utf16
- package utf8
- package unsafe