类型转换:
简单类型转换:(一般是数字之间的转换)
表达式:转换类型(转换值)
func main() { var i = 42 f := float64(i) var u = uint(f) var p = string(i)//会改变值 fmt.Printf("i type=%T ",i) fmt.Printf("f type=%T ",f) fmt.Printf("u type=%T ",u) fmt.Printf("p type=%T ",p) fmt.Printf("p value=%v ",p) }
运行结果:
i type=int
f type=float64
u type=uint
p type=string
p value=*
可以发现p的值已经变成42对应的ASCII码
strconv包转换:
int转换为字符串:strconv.Itoa()
println("astring" + strconv.Itoa(666)) // 可以直接转换,输出为astring666
string转换为int:strconv.Atoi()
func Atoi(s string) (int, error)
由于string可能无法转换为int,所以这个函数有两个返回值:第一个返回值是转换成int的值,第二个返回值判断是否转换成功
strconv包的Parse类:
Parse类函数用于转换字符串为给定类型的值(string->x):strconv.ParseBool()、strconv.ParseFloat()、strconv.ParseInt()、strconv.ParseUint()
func ParseBool(s string) (i bool, err error)//真值:1, t, T, TRUE, true, True;假值:0, f, F, FALSE, false, False. func ParseFloat(s string, 64) (i float64, err error)//只支持64位 func ParseInt(s string, base int, bitSize int) (i int64, err error)//base:按几进制转换,bitSize:转换的位数(8,16,32,64) func ParseUint(s string, base int, bitSize int) (uint64, error)//base:按几进制转换,bitSize:转换的位数(8,16,32,64)
同string转int一样,由于有无法转换的可能性,所以都有两个返回值,第一个返回值是转换成对应类型的值,第二个返回值判断是否转换成功
strconv包的Format类:
Format类函数用于给定类型的值转换为字符串(x->string):strconv.FormatBool()、strconv.FormatFloat()、strconv.FormatInt()、strconv.FormatUint()
func FormatBool(i bool) string func FormatFloat(i float64, fmt byte, prec, bitSize int) string//fmt:格式标记(b、e、E、f、g、G),prec:代表输出的精度小数点后的位数,如果是<0的值,则返回最少的位数来表示该数,如果是大于0的则返回对应位数的值bitSize:转换的位数(32,64) /*
格式标记: 'b' (-ddddp±ddd,二进制指数) 'e' (-d.dddde±dd,十进制指数) 'E' (-d.ddddE±dd,十进制指数) 'f' (-ddd.dddd,没有指数) 'g' ('e':大指数,'f':其它情况) 'G' ('E':大指数,'f':其它情况)
*/ func FormatInt(i int64, base int) string//base:按几进制转换 func FormatUint(i uint64, base int) string//base:按几进制转换
strconv包的Append类:(切片slice在后面讲)
AppendTP类函数跟Format类一样,只是转换成字符串后再append到一个slice中:strconv.AppendBool()、strconv.AppendFloat()、strconv.AppendInt()、strconv.AppendUint()。、
func AppendBool(i []bool) string func AppendtFloat(i []float64, fmt byte, prec, bitSize int) string func AppendInt(i []int64, base int) string//base:按几进制转换 func AppendUint(i []uint64, base int) string//base:按几进制转换
常量:
常量声明与初始化跟变量相似,只是var变成了const,而且无法使用短变量
const 变量名 变量类型 = 变量值
const a string = "test"