博客
关于我
golang基础--类型与变量
阅读量:412 次
发布时间:2019-03-06

本文共 2419 字,大约阅读时间需要 8 分钟。

基础知识--类型与变量

基本类型

  • 布尔型: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 mainimport "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)}/*output0 //int0 //int320 //float32false //bool// string 默认为空[]    //切片*/

类型别名

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

    // 类型别名package mainimport "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 mainimport "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 mainimport "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 mainimport (    "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"

转载地址:http://dhduz.baihongyu.com/

你可能感兴趣的文章
Java注释
查看>>
C++ 函数重载
查看>>
使用mybatis-generator生成底层
查看>>
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
查看>>
计算输入的一句英文语句中单词数
查看>>
lvs+keepalive构建高可用集群
查看>>
6 个 Linux 运维典型问题
查看>>
Failed to get D-Bus connection: Operation not permitted解决
查看>>
取消vim打开文件全是黄色方法
查看>>
一个系统部署多个tomcat实例
查看>>
HP服务器设置iLO
查看>>
从头实现一个WPF条形图
查看>>
使用QT实现一个简单的登陆对话框(纯代码实现C++)
查看>>
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
查看>>
GLFW 源码 下载-编译-使用/GLAD配置
查看>>
针对单个网站的渗透思路
查看>>
Typescript 学习笔记六:接口
查看>>
02、MySQL—数据库基本操作
查看>>
OpenJDK1.8.0 源码解析————HashMap的实现(一)
查看>>
MySQL-时区导致的时间前后端不一致
查看>>