zoukankan      html  css  js  c++  java
  • golang基础--类型与变量

    基础知识--类型与变量

    基本类型

    • 布尔型:bool

      • 长度: 1字节
      • 取值范围: false, true
      • 注意事项: 不可以使用数字代表,不像 python中可是使用 1和0表示
    • 整型: int/uint

      • 根据运行平台可能是32位或者是64位
    • 8位整型: int8/uint8

      • 长度:1字节
      • 取值范围:
        • 128~127(有运算符号)
        • 0-255 无符号
    • 字节型: byte (uint8别名)

    • 16位整型:int16/uint16

      • 长度:2字节
      • 取值范围: -32768~32767 / 0~65536
    • 32位整型:int32(rune) /uint32

      • 长度:4字节
      • 取值范围:-2^32 /2 -2^32 / 2-1/0~2^32-1
    • 64位整型:int64/uint64

      • 长度:8字节
      • 取值范围:-2^64 /2 -2^64 / 2-1/0~2^64-1
    • 浮点型: float32/float64

      • 长度:4/8字节
      • 小数位:精度 7/15小数位
    • 足够保存指针的32或64位整数型:uintptr

    • 其他类型:

      • array, struct ,string
    • 引用类型:

      • slice, map, chan(通道--高并发特有)
    • 接口类型: inteface

    • 函数类型:func

    类型零值

    • 零值并不等于空值,而是当变量被声明位某种类型后的默认值,通常情况下值类型的默认值为0,bool为false, string 为空字符串

      package main
      import "fmt"
      func main(){
          var a int
          var b int32
          var c float32
          var d bool
          var e string
          var a1[] int
          fmt.Println(a)
          fmt.Println(b)
          fmt.Println(c)
          fmt.Println(d)
          fmt.Println(e)
          fmt.Println(a1)
      }
      /*output
      0 //int
      0 //int32
      0 //float32
      false //bool
      // string 默认为空
      []    //切片
      */
      

    类型别名

    • 顾名思义就是可以将类型名指向一个别名

      // 类型别名
      package main
      import "fmt"
      type (
      byte int8
          rune int32
          文本  string  // 可使用中文类型别名(不建议这样做,It's stupid!)
          ByteSize int64 // 可以更加直观的描述类型
        )
      func main()  {
          var b 文本  //将string 类型定义别名为文本
      b ="文本类型名"
      fmt.Println(b)
      }
      // output : 文本类型名import "fmt"
      

    多个变量的声明

    • 注意多个变量赋值多种写法

        //多个变量声明
      package main
      
      import "fmt"
      
      var (
          aaa = "hello"
          sss,bbb = 1, 2 //自行推断类型  
          // ccc :=3是错误的,不可以省略var
      )
      
      func main() {
          //var a, b, c, d = 1, 2, 3, 4       //并行声明变量,省略int类型
          //a, b, c, d := 1, 2, 3, 4	      // 函数变量中可以省略var,全局变量必须使用var
          a, _, c, d := 1, 2, 3, 4	     // _可以忽略某一个值,实际应用于当函数有多个返回值时,忽略某一个不使用的值
          fmt.Println(a)
          //fmt.Println(b)
          fmt.Println(c)
          fmt.Println(d)
        }
      

    变量类型转换

    • go中不存在隐式转换,所有的类型转化必须是显示的声明

    • 转换只发生在两种相互兼容的类型之间

    • 类型转换格式如下:

      // 类型转换
      package main
      
      import "fmt"
      
      func main() {
          var a float32 = 100.1
          fmt.Println(a)
          b := int(a)
          fmt.Println(b)                             //这种方式是可行,只存在精度的丢失
          c :=bool(a)                                //这种方式是可行,只存在精度的丢失
          fmt.Println(c)
        }
      
        /*output
        a-->100.1
        b--->100  //丢失了精度
        c--->cannot convert a (type float32) to type bool
        */
      
    • 思考:数字如何变成字符串?

      //int转string,并不是我们想达到的效果
      package main
      
      import (
          "fmt"
          "strconv"                                    //导入类型转换包
         )
      
      func main() {
          var a int = 65
          b := string(a)                              //int 转string,输出的是UTF8码中,序号65位表示的是字母A
          b1 := strconv.Itoa(a)                       //确实想要将int 65 转换成string 65,使用 strconv包
          fmt.Println(b)
          fmt.Println(b1)
        }
      
        //output: A
        //output: "65"
      
  • 相关阅读:
    spark基础(1)
    Homebrew的使用教程,镜像源的推荐,安装软件的方法
    Scala Trait(特征)
    P5308 [COCI2019] Quiz
    Vjudge contest 425291
    Vjudge contest 424925
    AT3558 Modern Painting
    Vjudge contest 425061
    Vjudge contest 423849
    Codeforces Round 704
  • 原文地址:https://www.cnblogs.com/failymao/p/9222723.html
Copyright © 2011-2022 走看看