基础知识--类型与变量

基本类型

  • 布尔型: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"

golang基础--类型与变量的更多相关文章

  1. golang基础类型

    1.变量 Go使用关键字var定义变量,类型信息放在变量名后面,初始化为零,如下: 在函数内部还有一种更简洁的:=定义方式 变量赋值,两个变量可直接交换 注意:函数内部定义的变量没使用的话编译器会报错 ...

  2. 玩转JavaScript OOP[0]——基础类型

    前言 long long ago,大家普遍地认为JavaScript就是做一些网页特效的.处理一些事件的.我身边有一些老顽固的.NET程序员仍然停留在这种认知上,他们觉得没有后端开发肯定是构建不了系统 ...

  3. go基础知识之变量,类型,常量,函数

    3 变量 变量是什么 变量指定了某存储单元(Memory Location)的名称,该存储单元会存储特定类型的值.在 Go 中,有多种语法用于声明变量. 声明单个变量 var name type 是声 ...

  4. 1、Golang基础--Go简介、环境搭建、变量、常量与iota、函数与函数高级

    1 Go语言介绍 1 golang-->Go--->谷歌公司 2009年 golang:指go语言,指的go的sdk goland:软件,ide:集成开发环境 Java写的 2 Go是静态 ...

  5. JavaScript学习笔记-基础语法、类型、变量

    基础语法.类型.变量   非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或 ...

  6. JavaScript随笔记(一)基础概念以及变量类型

    一.JavaScript中的基础概念 1.defer属性 一般我们在引用外部js文件的时候往往是将引用文件的位置放在标签当中,比如那么在标签中引入多个js文件时,浏览器会按照引入顺序加载执行这些引入的 ...

  7. 【Go入门教程4】变量(var),常量(const),内置基础类型(Boolean、数值 byte,int,rune、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值

    这小节我们将要介绍如何定义变量.常量.Go 内置类型以及 Go 程序设计中的一些技巧. 定义变量 Go 语言里面定义变量有多种方式. 使用 var 关键字是 Go 最基本的定义变量方式,与 C 语言不 ...

  8. 『Python基础-3』变量、定义变量、变量类型、关键字Python基础-3』变量、定义变量、变量类型、关键字

    『Python基础-3』变量.定义变量.变量类型.关键字 目录: 1.Python变量.变量的命名 2.变量的类型(Python数据类型) 3.Python关键字 1. Python 变量.变量的命名 ...

  9. C#指南,重温基础,展望远方!(3)类型和变量

    C# 有两种类型:值类型和引用类型. 值类型的变量直接包含数据,而引用类型的变量则存储对数据(称为“对象”)的引用.对于引用类型,两个变量可以引用同一对象:因此,对一个变量执行的运算可能会影响另一个变 ...

随机推荐

  1. 常用vimrc记录

    记录下vim 的一些常用配置.每当换到一台新电脑的时候,使用vim的时候,缩进等各种方式都不友好.每次都要到互联网上去找,还要找半天,这篇博客,记录下我常用的vim配置,以及扩展,能够快速的配置开发环 ...

  2. 记录一次mysql使用load into命令导入csv格式数据的过程

    今天从qwiklab实验获取一组数据,大概有5万条,在qwiklab实验室使用的是pgsql数据库,但是今天想把他插入本地的mysql数据库中. 1.首先是查看一下数据内容: 数据中有的是空值,有的是 ...

  3. 【优质】React的学习资源

    React的学习资源 github 地址: https://github.com/LeuisKen/react-collection https://github.com/reactnativecn/ ...

  4. JavaScript中的单例模式

    单例模式 在JavaScript中,单例(Singleton)模式是最基本又最有用的模式之一.这种模式提供了一种将代码组织为一个逻辑单元的手段,这个逻辑单元中的代码可以通过单一的变量进行访问.确保单例 ...

  5. JAVA反射机制_获取字节码文件对象

    是在运行状态中,对于任意一个类 (class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及动态调用对象的方法的功能称为java语 ...

  6. AIX平台安装Oracle11gR2数据库

    1. 前提条件 1.1 认证操作系统 Certification Information for Oracle Database on IBM AIX on Power systems(Doc ID ...

  7. php大流量高并发解决方案

    一.硬件 提升硬件,影响因素有: 带宽-硬盘读写速度-内存大小-cpu处理速度   二.软件 反向代理负载均衡 mysql : 1.优化你的sql和索引 2.加缓存,memcached,redis 3 ...

  8. OpenCV——HOG特征检测

    API: HOGDescriptor(Size _winSize, ---:窗口大小,即检测的范围大小,前面的64*128 Size _blockSize,--- 前面的2*2的cell,即cell的 ...

  9. mysql中唯一约束用法

    以前比较naive,有次同事一定要在表里建唯一约束的时候,我就很纳闷为啥非要在db层面做限制,在自己的业务代码里做啊,就是说入库的时候先查一遍有没有,没有记录的情况再准许入库. 后来发现如果只是自己处 ...

  10. mock使用中出现的错误

    当出现错误Class mocking requires to have objenesis library in the classpath时,缺少了objenesis库文件...下载objenesi ...