基本数据类型和string的转换
在程序开发中,我们经常将数据类型转成string或者string转成基本数据类型
基本类型转string类型
1、 fmt.Sprintf("%参数", 表达式) 【灵活】
函数介绍:
func Sprintf(format string, a …interface{}) string
// Sprintf根据format参数生成格式化的字符串并返回该字符串
参数需要和表达式的数据类型想匹配
fmt.Sprintf()… 会返回转换后的字符串
2、使用strconv 包的函数
1 2 3 4 | func FormatBool(b bool) string func FormatFloat64(f float64,fmt byte,prec,bitSize int) string func FormatInt(i int64,base int) string func FormatUnit(i unit64,base int) string |
- 案例演示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | package main import ( "fmt" "strconv" ) func main() {<!-- --> var num1 int = 99 var num2 float64 = 23.456 var b bool = true var myChar byte = 'h' var str string //空的string // 使用第一种方式来转换 fmt.Sprintf方法 str = fmt.Sprintf("%d", num1) fmt.Printf("str type %T str=%q\n", str, str) str = fmt.Sprintf("%f", num2) fmt.Printf("str type %T str=%q\n", str, str) str = fmt.Sprintf("%t", b) fmt.Printf("str type %T str=%q\n", str, str) str = fmt.Sprintf("%c", myChar) fmt.Printf("str type %T str=%q\n", str, str) // 第二种方式 strconv 函数 var num3 int = 99 var num4 float64 = 23.456 var b2 bool = true var num5 int64 = 4567 str = strconv.FormatInt(int64(num3), 10) fmt.Printf("str type %T str=%q\n", str, str) // strconv.AppendFloat(num4, 'f', 10, 64) // 说明:'f' 格式 10:表示小数位保留10位 64:表示这个小数是float64 str = strconv.FormatFloat(num4, 'f', 10, 64) fmt.Printf("str type %T str=%q\n", str, str) str = strconv.FormatBool(b2) fmt.Printf("str type %T str=%q\n", str, str) str = strconv.Itoa(int(num5)) fmt.Printf("str type %T str=%q\n", str, str) } |
string 类型转基本类型
1 2 3 4 5 | 使用时 strconv 包的函数 func ParseBool(str string)(value bool, err error) func ParseFloat(s string, bitSize int)(i int64, err error) func ParseInt(s string, base int, bitSize)(i int64, err error) func ParseUnint(s string, b int, bitSize int)(n unit64 err error) |
- 案例演示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | func main() {<!-- --> var str string = "true" var b bool // b, _ = strconv.ParseBool(str) // 说明: // 1、strconv.ParseBool(str) 函数会返回两个值 (value bool, err error) // 2、因为我只想获取到 value bool ,不想获取 err 所以我使用——忽略 b, _ = strconv.ParseBool(str) fmt.Printf("b type %T b=%v\n", b, b) var str2 string = "1234590" var n1 int64 var n2 int n1, _ = strconv.ParseInt(str2, 10, 64) n2 = int(n1) fmt.Printf("n1 type %T n1=%v\n", n1, n1) fmt.Printf("n2 type %T n2=%v\n", n2, n2) var str3 string = "123.456" var f1 float64 f1, _ = strconv.ParseFloat(str3, 64) fmt.Printf("f1 type %T f1=%v\n", f1, f1) } |
string 转基本数据类型的注意事项
在将string 类型转成 基本数据类型时,要确保string类型能够转成有效的数据,比如 我把"123", 转成一个整数,但是不能把"hello" 转成一整数,如果这样做,Golang直接将其转成 0 ,其他类型也是一样的道理。 float => 0 bool => false
1 2 3 4 | var str4 string = "hello" var n3 int64 = 11 n3, _ = strconv.ParseInt(str4, 10, 64) fmt.Printf("n3 type %T n3=%v\n", n3, n3) |