1. package main
  2. import "fmt"
  3. func main() {
  4. //定义bool类型
  5. //var gender = false
  6. //fmt.Println(gender)
  7. //相比python而言,go语言为什么有这么多种整数类型
  8. //年龄、分数都是有上限的年龄不超过0-200 分数不超过0-150
  9. //很多场景之下,数字有上限,我们可以选择合适的数据类型来降低内存的占用
  10. //int是一种动态类型取决于机器本身
  11. //var age int16 = 18
  12. //fmt.Println(unsafe.Sizeof(age))
  13. //fmt.Println(age)
  14. //float类型
  15. //var weight float32 = 71.2
  16. //fmt.Println(weight)
  17. //fmt.Println(math.MaxFloat32)
  18. //fmt.Println(math.MaxFloat64)
  19. //为什么64位的float最大值远大于int64位,float底层存储和int的存储不一样
  20. //float32 float64 两者占用的内存不一样 64位的最大数和精度都比32位高
  21. //weight := 71.2
  22. //fmt.Printf("%T\n", weight)
  23. //age := 18
  24. //fmt.Printf("%T\n", age)
  25. //byte 和 rune
  26. //byte 类型
  27. //静态语言中 中文处理很容易出错
  28. //var a byte = 18
  29. //fmt.Println(a)
  30. a := 'a'
  31. //这里注意一下
  32. //1. a+1可以和数字计算 2.a+1的类型是32 3. int类型可以直接变成字符
  33. fmt.Printf("%T\n", a+1)
  34. fmt.Printf("a+1 = %c", a+1)
  35. }

operator

  1. package main
  2. import "fmt"
  3. func main() {
  4. //算术运算符
  5. //a := 12
  6. //b := 22
  7. //fmt.Println(a - b)
  8. //fmt.Println(a + b)
  9. //fmt.Println(a * b)
  10. //fmt.Println(a / b)
  11. //a++
  12. //++a 不能前++
  13. var a = true
  14. var b = false
  15. if a && b {
  16. fmt.Printf("第一行 - 条件为 true\n")
  17. }
  18. if a || b {
  19. fmt.Printf("第二行 - 条件为 true\n")
  20. }
  21. /* 修改 a 和 b 的值 */
  22. a = false
  23. b = true
  24. if a && b {
  25. fmt.Printf("第三行 - 条件为 true\n")
  26. } else {
  27. fmt.Printf("第三行 - 条件为 false\n")
  28. }
  29. if !(a && b) {
  30. fmt.Printf("第四行 - 条件为 true\n")
  31. }
  32. }

var_convert

  1. package main
  2. import (
  3. "fmt"
  4. "strconv"
  5. )
  6. func main() {
  7. //1. 基本的类型转换
  8. //a := int(3.0)
  9. //fmt.Println(a)
  10. ////在go语言中不支持变量间的隐式类型转换
  11. ////1.变量间类型转换不支持
  12. ////var b int = 5.1 //5.0是常量 常量与变量支持 要求严格
  13. ////fmt.Println(b)
  14. //c := 5.0
  15. //fmt.Printf("%T\n", c)
  16. ////两种类型不一致
  17. ////var d int = c
  18. //var d = int(c)
  19. //fmt.Println(d)
  20. //var a int64 = 56
  21. //var b = int32(a)
  22. //fmt.Println(b)
  23. //int转字符串 itoa
  24. //fmt.Printf("%T\n", strconv.Itoa(int(a)))
  25. //字符串转int atoi
  26. //data, _ := strconv.Atoi("12")
  27. //fmt.Println(data)
  28. //parse类的函数 字符串转bool float int Uint
  29. //b, err := strconv.ParseBool("True")
  30. //fmt.Println(b, err)
  31. //f, err := strconv.ParseFloat("3.1415", 32)
  32. //fmt.Println(f, err)
  33. //fmt.Printf("%T\n", f)
  34. //base 将字符串中的数字进行解析, 以base的进制进行解析
  35. //i, err := strconv.ParseInt("-12", 8, 64)
  36. //fmt.Println(i, err)
  37. //u, err := strconv.ParseUint("42", 10, 64)
  38. //fmt.Println(u, err)
  39. //其他类型转字符串
  40. s1 := strconv.FormatBool(true)
  41. fmt.Println(s1)
  42. //true
  43. s2 := strconv.FormatFloat(3.1415, 'E', -1, 64)
  44. fmt.Println(s2)
  45. //3.1415E+00
  46. s3 := strconv.FormatInt(-42, 16)
  47. fmt.Println(s3)
  48. //表示将-42转换为16进制数,转换的结果为-2a。
  49. s4 := strconv.FormatUint(42, 16)
  50. fmt.Println(s4)
  51. //2a
  52. var data int
  53. var err error
  54. if data, err = strconv.Atoi("12"); err != nil {
  55. fmt.Println("转换出错")
  56. }
  57. fmt.Println(data)
  58. }