package main
import "fmt"
func main() {
//定义bool类型
//var gender = false
//fmt.Println(gender)
//相比python而言,go语言为什么有这么多种整数类型
//年龄、分数都是有上限的年龄不超过0-200 分数不超过0-150
//很多场景之下,数字有上限,我们可以选择合适的数据类型来降低内存的占用
//int是一种动态类型取决于机器本身
//var age int16 = 18
//fmt.Println(unsafe.Sizeof(age))
//fmt.Println(age)
//float类型
//var weight float32 = 71.2
//fmt.Println(weight)
//fmt.Println(math.MaxFloat32)
//fmt.Println(math.MaxFloat64)
//为什么64位的float最大值远大于int64位,float底层存储和int的存储不一样
//float32 float64 两者占用的内存不一样 64位的最大数和精度都比32位高
//weight := 71.2
//fmt.Printf("%T\n", weight)
//age := 18
//fmt.Printf("%T\n", age)
//byte 和 rune
//byte 类型
//静态语言中 中文处理很容易出错
//var a byte = 18
//fmt.Println(a)
a := 'a'
//这里注意一下
//1. a+1可以和数字计算 2.a+1的类型是32 3. int类型可以直接变成字符
fmt.Printf("%T\n", a+1)
fmt.Printf("a+1 = %c", a+1)
}
operator
package main
import "fmt"
func main() {
//算术运算符
//a := 12
//b := 22
//fmt.Println(a - b)
//fmt.Println(a + b)
//fmt.Println(a * b)
//fmt.Println(a / b)
//a++
//++a 不能前++
var a = true
var b = false
if a && b {
fmt.Printf("第一行 - 条件为 true\n")
}
if a || b {
fmt.Printf("第二行 - 条件为 true\n")
}
/* 修改 a 和 b 的值 */
a = false
b = true
if a && b {
fmt.Printf("第三行 - 条件为 true\n")
} else {
fmt.Printf("第三行 - 条件为 false\n")
}
if !(a && b) {
fmt.Printf("第四行 - 条件为 true\n")
}
}
var_convert
package main
import (
"fmt"
"strconv"
)
func main() {
//1. 基本的类型转换
//a := int(3.0)
//fmt.Println(a)
////在go语言中不支持变量间的隐式类型转换
////1.变量间类型转换不支持
////var b int = 5.1 //5.0是常量 常量与变量支持 要求严格
////fmt.Println(b)
//c := 5.0
//fmt.Printf("%T\n", c)
////两种类型不一致
////var d int = c
//var d = int(c)
//fmt.Println(d)
//var a int64 = 56
//var b = int32(a)
//fmt.Println(b)
//int转字符串 itoa
//fmt.Printf("%T\n", strconv.Itoa(int(a)))
//字符串转int atoi
//data, _ := strconv.Atoi("12")
//fmt.Println(data)
//parse类的函数 字符串转bool float int Uint
//b, err := strconv.ParseBool("True")
//fmt.Println(b, err)
//f, err := strconv.ParseFloat("3.1415", 32)
//fmt.Println(f, err)
//fmt.Printf("%T\n", f)
//base 将字符串中的数字进行解析, 以base的进制进行解析
//i, err := strconv.ParseInt("-12", 8, 64)
//fmt.Println(i, err)
//u, err := strconv.ParseUint("42", 10, 64)
//fmt.Println(u, err)
//其他类型转字符串
s1 := strconv.FormatBool(true)
fmt.Println(s1)
//true
s2 := strconv.FormatFloat(3.1415, 'E', -1, 64)
fmt.Println(s2)
//3.1415E+00
s3 := strconv.FormatInt(-42, 16)
fmt.Println(s3)
//表示将-42转换为16进制数,转换的结果为-2a。
s4 := strconv.FormatUint(42, 16)
fmt.Println(s4)
//2a
var data int
var err error
if data, err = strconv.Atoi("12"); err != nil {
fmt.Println("转换出错")
}
fmt.Println(data)
}