目录
一、各种类型相互转换
1. 整形间相互转换
一般都是由小转大,不建议由大转小,会有数值的误差
package main
import "fmt"
func main() {
var a int8 = 20
var b int16 = 40
var c = int16(a) + b // int8 转成 int16
fmt.Println(c) // 60
}
2. 整型转浮点型
package main
import "fmt"
func main() {
var a float32 = 12.1
var b int = 8
var c = a + float32(b)
fmt.Printf("%v -- %T", c, c) // 20.1 -- float32
}
3. 浮点型之间相互转换
package main
import "fmt"
func main() {
var a float32 = 12.12
var b float64 = 18.1
var c = float64(a) + b // 原样输出
var d = fmt.Sprintf("%.4v", c) // 输出四位,并四舍五入
fmt.Println(c) // 30.219999885559083
fmt.Println(d) //30.22
}
4. 其他类型转换为string,第一种方式 spritf
package main
import "fmt"
func main() {
var i int = 12
var f float32 = 15.14
var t bool = true
var b byte = 'b'
// sprintf 使用中需要注意转换的格式 int 为%d float 为%f bool 为%t byte 为%c/%v是输出的ascii值
var str1 = fmt.Sprintf("%d", i)
fmt.Printf("%v -- %T\n", str1, str1) // 12 -- string
var str2 = fmt.Sprintf("%f", f)
fmt.Printf("%v -- %T\n", str2, str2) // 15.140000 -- string
var str3 = fmt.Sprintf("%t", t)
fmt.Printf("%v -- %T\n", str3, str3) // true -- string
var str4 = fmt.Sprintf("%c", b)
var str5 = fmt.Sprintf("%v", b)
fmt.Printf("%v -- %T\n", str4, str4) // b -- string
fmt.Printf("%v -- %T\n", str5, str5) // 98 -- string
}
5. 第二种方式,strconv
package main
import (
"fmt"
"strconv"
)
func main() {
var i int = 12
var f float32 = 15.14
var t bool = true
var str1 = strconv.FormatInt(int64(i), 10)
fmt.Printf("%v -- %T\n", str1, str1)
/**
参数 1:要转的值,float64格式
参数 2:格式化类型
'f'(-ddd.dddd)、
'b'(-ddddp±ddd,指数为二进制)、
'e'(-d.dddde±dd,十进制指数)、
'E'(-d.ddddE±dd,十进制指数)、
'g'(指数很大时用'e'格式,否则'f'格式)、
'G'(指数很大时用'E'格式,否则'f'格式)。
参数 3: 保留的小数点 -1(不对小数点格式化)
参数 4:格式化的类型
*/
var str2 = strconv.FormatFloat(float64(f), 'f', 1, 64)
fmt.Printf("%v -- %T\n", str2, str2)
var str3 = strconv.FormatBool(t)
fmt.Printf("%v -- %T\n", str3, str3)
}
6. 字符串转其他类型,strconv
package main
import "fmt"
func main() {
var str1 = "123456"
i64, _ := strconv.ParseInt(str1, 10, 64)
fmt.Printf("%v -- %T\n", i64, i64) // 123456 -- int64
var str2 = "3.14159"
f64, _ := strconv.ParseFloat(str2, 64)
fmt.Printf("%v -- %T\n", f64, f64) // 3.14159 -- float64
}
二、各种运算符
1. 算术运算符
注意: 1) 除法:如果相除的两个数都是整数,那么除后会自动去掉小数部分,保留整数部分
2) ++, -- 只能独立使用
package main
import "fmt"
func main() {
fmt.Println(10 / 3) // 3
fmt.println(10.0 / 3) // 3.333333335
var a = 10
b := a++ // 这种是错误的,错误的
a++ // 只可以这样使用!!!
}
2. 关系运算符
3. 逻辑运算符
注意:1)&& 前面是false那么后面不再执行;2)|| 前面是true 后面不再执行。