Go基础知识入门 - 基础数据类型

67 阅读2分钟

类型介绍

image.png

bool类型

布尔类型的值只可以是true或者false

数值类型

整数型

  • int8 有符号 8 位整型(-128到 127) 长度:8bit
  • int16 有符号 16 位整型(-32768 到32767)
  • int32 有符号 32 位整型(-2147483648 到 2147483647)
  • int64 有符号 64 位整型(-9223372036854775808 到 9223372036854775807)
  • uint8 无符号 8 位整型(0 到 255) 8位都用于表示数值
  • uint16 无符号 16 位整型(0 到 65535)
  • uint32 无符号 32 位整型(0 到4294967295)
  • uint64 无符号 64 位整型(0 到18446744073709551615)

有符号数第一位代表数值是正数或者负数,在相同位数下无符号数绝对值范围有符号数2倍,我们常用的int类型其实是一个动态类型,根据我们的操作系统来的,如果操作系统是64位那它就是int64

func main(){
    var a int8
    var b int16
    
    // 必须类型转化,超过最大值会丢失精度
    a = int8(b)

}

浮点数

  • float32 32位浮点型数
  • float64 64位浮点型数

其他

  • byte 等于 uint8
  • rune 等于 int32
  • uint 32 或 64位

byte

image.png

func main(){

   var c byte // 主要适用于存放字符
   c = 'a' // 单引号是字符,双引号是字符串

   // 97
   fmt.Println(c)

   // c=a
   fmt.Printf("c=%c", c)

   c1 := 97

   // c=a
   fmt.Printf("c1=%c", c1)

   c = c + 1 // c的本质是97

   // c=b
   fmt.Printf("c1=%c", c)

}

rune

image.png

func main(){

   var c2 rune // 也是字符,除英文之外的,中文,韩文等
   c2 = '干'
   
   // 24178
   fmt.Println(c2)

}

基本类型转换

简单的转换操作

valueOfTypeB = typeB(valueOfTypeA)
func main(){
   a := 3.1

   // 转换成int类型
   b := int(a)

   // 3
   fmt.Println(b)

   // Go允许在底层结构相同的两个类型之间相互转换
   // TT相当于int类型的别名
   type TT int

   var a1 TT = 5

   b1 := int(a1)

   c1 := TT(b1)
   
   // 字符串转数字
   var str = "123"
   myint, err := strconv.Atoi(str)
   if err != nil{
       fmt.Println("error")
   }
   
   // 123
   fmt.Println(myint)
   
   // 数字转字符串 没有err,默认不可能出错
   var num = 123
   mystr := strconv.ItoA(num)
   
   // "123"
   fmt.Println(mystr)

}

fomat进行格式化转换

func main(){
   myfloat, err := strconv.ParseFloat("123", 64)
   if err != nil{
      return
   }
   myint, err := strconv.ParseInt("123", 10, 64)
   if err != nil{
      return
   }

   // bool零值为false  0 || "false" => false   1||"true" => true
   mybool, err := strconv.ParseBool("true")
   if err != nil{
      return
   }

   fmt.Println(myfloat, myint, mybool)

   // 基本类型转字符串
   boolstr := strconv.FormatBool(true)
   fmt.Println(boolstr)

   // 3.1415E+00
   floatstr := strconv.FormatFloat(3.1415, 'E', -1, 64)
   fmt.Println(floatstr)



   floatint := strconv.FormatInt(-42, 16)

   //-2a
   fmt.Println(floatint)


}

运算符和表达式

基本上和js大同小异