{mtitle title="Go数据类型的转换"/}
{dotted startColor="#ff6c6c" endColor="#e019fa"/}
string转基本类型
基本介绍:
字符串就是一串固定长度的字符连接起来的字符序列,Go的字符是由单个字节链接起来的,Go语言的字符串的字节使用UTF-8编码Unicode文本
注意事项:
- Go语言的字符串的字节使用UTF-8编码表示Unicode文本,这样Golang统一Golang使用UTF-8编码问题不会在困扰程序员
字符串一旦赋值了就不能修改了:在Go的字符是可以更改的
案例:
字符串的两种表达形式
字符串的拼接方式
案例:
♾️ go 代码:package main
import (
"fmt"
"strconv"//用到的包
)
func main() {
var str string = "true"
var b bool
b , _ = strconv.ParseBool(str)// b , _ = strconv.ParseBool(str):strconv.ParseBool(str)函数会返回两个值(value bool, err error
//因为只想获取到 value bool ,不想获取err所以我使用 _忽略
fmt.Printf("b type %T b=%v", 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 类型能够转成有成效的数据类型,比如“123”可以转换成一个整数,但是不能吧“hello”转成一个整数,如果这样做,Golang直接将其转换成0,其他类型也是如此。eg:float=>0 bool =>false
案例:
var str4 string = "hello"
var n3 int64 =11
n3, _ = strconv.ParseInt(str4, 10,64)
fmt.Printf("n3 type %T n3=%v\n", n3, n3)
运行结果:
基本数据类型和string 的转换
方式一:fmt.Printf("%参数",表达式)
1、参数需要和表达式的数据类型相匹配
2、 fmt.Sprintf()
会返回转换后的字符串
方式二:
使用strconv包的函数
string类型转基本数据类型
func ParseBool(str string)(value bool, err error)//转Bool型
func ParseFloat(s string, bitSize int)(f, float64, err error)//转Float型
func ParseInt(s string,base int, bitSize int)(i int64, err error)//转Int型
func ParseUint(s string, b int , bitSize int)(n Uint64, err error)//转Uint型
★ 案例:
♾️ go 代码:package main
import (
"fmt"
"strconv"
)
//演示golang中string转成的基本数据类型
func main() {
var str string = "true"
var b bool
b , _ = strconv.ParseBool(str)// b , _ = strconv.ParseBool(str):strconv.ParseBool(str)函数会返回两个值(value bool, err error
//因为只想获取到 value bool ,不想获取err所以我使用 _忽略
fmt.Printf("b type %T b=%v", 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)
var str4 string = "hello"
var n3 int64 =11
n3, _ = strconv.ParseInt(str4, 10,64)
fmt.Printf("n3 type %T n3=%v\n", n3, n3)
}
{dotted startColor="#ff6c6c" endColor="#f719fa"/}
指针
基本介绍
- 基本数据类型,变量存的就是值,也叫值类型
- 获取变量的地址,用&,比如:
var num int
,获取num
的地址,这个地址指向的空间存的才是值,比如:var ptr *int = &num
案例
♾️ go 代码:package main
import (
"fmt"
)
func main() {
//基本数据类型在内存布局
var i int = 10
fmt.Println("i的地址=", &i)
}
- 指针类型,变量存的是一个地址所指向的值,使用:,比如:
var *ptr int
,使用 ptr获取指向的值
案例:
♾️ go 代码:package main
import (
"fmt"
)
func main() {
//基本数据类型在内存布局
var i int = 10
fmt.Println("i的地址=", &i)
var ptr *int = &i//解释:ptr是一个指针变量,是指向intd的一个指针,ptr本身的值是&i
fmt.Printf("ptr=%v\n",ptr)
fmt.Printf("ptr d的地址=%v\n", ptr)
fmt.Printf("ptr 的地址=%v\n", *ptr)
}
运行结果:
举例说明:
♾️ go 代码:var num int = 1 var i = 999 var ptr *int = &i
运行结果: