默认值:

整型的默认值:0

浮点型的默认值:0
字符串的默认值:""   //空
布尔类型的默认值:false

package main
import "fmt"

func main() {
  var a int //0
  var b float32 //%f的输出是0.000000,%v的输出是0
  var c float64 //%f的输出是0.000000,%v的输出是0
  var isMarryied bool //false
  var name string //""

  //这里的%v 表示按照变量的值输出
  fmt.Printf("a=%d,b=%v,c=%v,isMarryied=%v,name=%v",a,b,c,isMarryied,name)
}

转换:

golang和java / c 不同,Go在不同类型的变量之间赋值时需要显示转换。也就是说Golang中数据类型不能自动转换。

基本语法:
  表达式T(v) 将值v转换为类型 T
  T: 就是数据类型,比如int32, int64, float32等等
  v: 就是需要转换的变量

案例演示:
  var i int = 42
  var f float64 = float64(i)
  var u uint8 = uint8(f)
  fmt.Println(i,f,u)

细节说明:

  1) Go中,数据类型的转换可以是从 表示范围小-->表示范围大, 也可以 范围大-->范围小
  2) 被转换的是变量存储的数据(即值),变量本身的数据类型并没有变化!
  3)在转换中,比如将int64 转成int8,编译时不会报错,只是转换的结果是按溢出处理,和我们希望的结果不一样。 因此在转换时,需要考虑范围。
  var num1 int64 = 999999
  var num2 int8 = int8(num1)
  fmt.Println("num2=", num2) //63(这个就溢出了)

课堂练习:

第一题:

func main() {

  var n1 int32 = 12
  var n2 int64
  var n3 int8

  n2 = n1 + 20 //int32 -→ int64 错误
  n3 = n1 + 20 //int32 -→ int8 错误
}

如何修改上面的代码?
func main() {
  var n1 int32 = 12
  var n2 int64
  var n3 int8

  n2 = int64(n1) + 20
  n3 = int8(n1) + 20
  fmt.Println("n2=", n2, "n3=", n3)
}

第二题:

func main() {
  var n1 int32 = 12
  var n3 int8
  var n4 int8

  n4 = int8(n1) + 127 //编译能通过,只是会有溢出
  n3 = int8(n1) + 128 //编译报错,128超过了int8的范围了,所以编译的时候报错。
  fmt.Println(n3)
}

golang的数据类型之基本数据类型的默认值和转换的更多相关文章

  1. vue prop不同数据类型(数组,对象..)设置默认值

    vue prop 会接收不同的数据类型,这里列出了 常用的数据类型的设置默认值的写法,其中包含: Number, String, Boolean, Array,  Function, Object   ...

  2. 【转】MySQL datetime数据类型设置当前时间为默认值

    转自http://blog.csdn.net/u014694759/article/details/30295285 方法一: MySQL目前不支持列的Default 为函数的形式,如达到你某列的默认 ...

  3. java各种数据类型的数组元素的默认值

    public class DataTypeDefaultValue { public static void main(String[] args) { // string类型数组的默认值null / ...

  4. java入门---基本数据类型之引用数据类型&数据类型转换

        接着上一篇文章来,这次就先看看什么是引用数据类型?首先得满足以下条件: 在Java中,引用类型的变量非常类似于C/C++的指针.引用类型指向一个对象,指向对象的变量是引用变量.这些变量在声明时 ...

  5. SQL SERVER 2008 设置字段默认值为当前时间

    在某些情况下需要对某条记录添加上时间戳,比如用户注册,需要记录用户的注册时间,在SQL SERVER 2008中可以通过 1. 添加新字段 2. 数据类型设置为smalldatetime 3. 默认值 ...

  6. golang基础之二-基本数据类型和操作符

    文件名&关键字&标识符 所有go源码都是以.go结尾 标识符以字母或下划线开头,大小写敏感 下划线_是特殊标识符,用户忽略结果 保留关键字 导入包时可以设置别名 下面是保留关键字: b ...

  7. [知识笔记]Java 基本数据类型的大小、取值范围、默认值

    数据类型 大小(字节) 范围 默认值 boolean 1/8(1bit) true/false false byte 1 -128~127 (-2^7~2^7-1) 0 short 2 -32768~ ...

  8. java 8种基本数据类型的默认值及所占字节数

    通过一段代码来测试一下 8种基本数据类型的默认值 package dierge; public class Ceshi { int a; double b; boolean c; char d; fl ...

  9. java 常用基本数据类型的默认值

    在使用基本数据类型作为类成员的时候,有时只初始化了而没有给变量赋值,那么此时,java会给你的变量赋一个默认初始值. boolean        false char              '/ ...

随机推荐

  1. K The Right-angled Triangles

    链接:https://ac.nowcoder.com/acm/contest/338/K来源:牛客网 题目描述 Consider the right-angled triangles with sid ...

  2. [烧脑时刻]EL表达式1分钟完事

    一天,程序员A问我,我们比比谁的知识点多,反应快.我回答:那就看谁最快用EL表达式的显示在页面上吧. 话不多说,计时开始. 项目的结构如上,大概就是一个Family的JavaBean,一个jsp页面, ...

  3. A星寻路

    逻辑代码 using System.Collections.Generic; using System.Text; using UnityEngine; namespace Game { public ...

  4. Codeforces 633F 树的直径/树形DP

    题意:有两个小孩玩游戏,每个小孩可以选择一个起始点,并且下一个选择的点必须和自己选择的上一个点相邻,问两个选的点权和的最大值是多少? 思路:首先这个问题可以转化为求树上两不相交路径的点权和的最大值,对 ...

  5. P.W.N. CTF - MISC - Canadian FOI

    题目 链接:https://ctftime.org/task/6935 题解 只有两个页面的网站,index.html和about.html index.html页面有一个pdf链接,指向http:/ ...

  6. C#基础知识之类和结构

    虽然项目中一直在使用类.结构体等类型,仔细琢磨,还真无法系统的说出个所以然.记录一下类.结构体.类和结构体区别 一.类 对于类,大家都特别熟悉.简单的介绍一下类的结构,然后记录一下Class需要注意的 ...

  7. Hibernate纯sql查询VO对象封装

    hibernate 纯sql查询返回结果集(未关联映射)组装VO的问题//须保证别名字段与Vo字段一致 //引号中为vo对象属性需与sql查询返回字段一致.addScalar("chname ...

  8. web安全—tomcat禁用WebDAV或者禁止不需要的 HTTP 方法

    现在主流的WEB服务器一般都支持WebDAV,使用WebDAV的方便性,呵呵,就不用多说了吧,用过VS.NET开发ASP.Net应用的朋友就应该 知道,新建/修改WEB项目,其实就是通过WebDAV+ ...

  9. bzoj5161 最长上升子序列 状压DP(DP 套 DP) + 打表

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5161 题解 回顾一下以前用二分求 LIS 的方法:令 \(f[i]\) 表示长度为 \(i\) ...

  10. Ubuntu18.04 安装 Idea 2018.2

    https://blog.csdn.net/weixx3/article/details/81136822 Ubuntu18.04 安装 Idea 2018.2环境信息:OS:Ubuntu18.04J ...