go库-fmt&strconv
目录
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
a := 10
s := "hello world"
p := Person{Name: "wohu", Age: 25}
c := []int{1, 2, 3, 4}
fmt.Printf("p %%v is %v\n", p) // p %v is {wohu 25}
fmt.Printf("p %%+v is %+v\n", p) // p %+v is {Name:wohu Age:25}
fmt.Printf("p %%#v is %#v\n", p) // p %#v is main.Person{Name:"wohu", Age:25}
fmt.Printf("p type is %T\n", p) // p type is main.Person
fmt.Printf("a %%#v is %#v, a type is %T\n", a, a) // a %#v is 10, a type is int
fmt.Printf("s %%#v is %#v, s type is %T\n", s, s) // s %#v is "hello world", s type is string
fmt.Printf("c %%v is %v, c type is %T\n", c, c) // c %v is [1 2 3 4], c type is []int
fmt.Printf("c %%#v is %#v, c type is %T\n", c, c) // c %#v is []int{1, 2, 3, 4}, c type is []int
}
1. 常用函数
1. Fprintf
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
Fprintf
根据 format
参数生成格式化的字符串并写入 w
。返回写入的字节数和遇到的任何错误。
2. Printf
func Printf(format string, a ...interface{}) (n int, err error)
根据 format
参数生成格式化的字符串并写入标准输出。
3. Sprintf
Sprintf
根据 format
参数生成格式化的字符串并返回该字符串。
func Sprintf(format string, a ...interface{}) string
4. Scanf
Scanf
从标准输入扫描文本,根据 format
参数指定的格式将成功读取的空白分隔的值保存进成功传递给本函数的参数。返回成功扫描的条目个数和遇到的任何错误。
func Scanf(format string, a ...interface{}) (n int, err error)
2. strconv
1. string 与 int 类型之间的转换
package main
import (
"fmt"
"strconv"
)
func main() {
num := 100
str := strconv.Itoa(num)
fmt.Printf("type:%T ---- value:%#v\n", str, str) // type:string ---- value:100
}
package main
import (
"fmt"
"strconv"
)
func main() {
str1 := "110"
str2 := "s100"
num1, err := strconv.Atoi(str1)
if err != nil {
fmt.Printf("%v 转换失败!", str1)
} else {
fmt.Printf("type:%T value:%#v\n", num1, num1)
}
num2, err := strconv.Atoi(str2)
if err != nil {
fmt.Printf("%v 转换失败!", str2)
} else {
fmt.Printf("type:%T value:%#v\n", num2, num2)
}
}
2. Parse系列函数
1. ParseBool
func main() {
str1 := "110"
boo1, err := strconv.ParseBool(str1)
if err != nil {
fmt.Printf("str1: %v\n", err)
} else {
fmt.Println(boo1)
}
str2 := "t"
boo2, err := strconv.ParseBool(str2)
if err != nil {
fmt.Printf("str2: %v\n", err)
} else {
fmt.Println(boo2)
}
}
2. ParseInt
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 main() {
str := "-11"
num, err := strconv.ParseInt(str, 10, 0)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(num)
}
}
3. ParseUnit
func ParseUint(s string, base int, bitSize int) (n uint64, err error) // 用于无符号整型
4. ParseFloat
func ParseFloat(s string, bitSize int) (f float64, err error)
func main() {
str := "3.1415926"
num, err := strconv.ParseFloat(str, 64)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(num) // 3.1415926
}
}
3. Format函数
Format
系列函数实现了将给定类型数据格式化为字符串类型
的功能,其中包括FormatBool()
、FormatInt()
、FormatUint()
、FormatFloat()
。
4. Append函数
Append
系列函数用于将指定类型转换成字符串后追加到一个切片中
,其中包含AppendBool()
、AppendFloat()
、AppendInt()
、AppendUint()
。