golang的数据类型之基本数据类型的默认值和转换
默认值:
整型的默认值: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的数据类型之基本数据类型的默认值和转换的更多相关文章
- vue prop不同数据类型(数组,对象..)设置默认值
vue prop 会接收不同的数据类型,这里列出了 常用的数据类型的设置默认值的写法,其中包含: Number, String, Boolean, Array, Function, Object ...
- 【转】MySQL datetime数据类型设置当前时间为默认值
转自http://blog.csdn.net/u014694759/article/details/30295285 方法一: MySQL目前不支持列的Default 为函数的形式,如达到你某列的默认 ...
- java各种数据类型的数组元素的默认值
public class DataTypeDefaultValue { public static void main(String[] args) { // string类型数组的默认值null / ...
- java入门---基本数据类型之引用数据类型&数据类型转换
接着上一篇文章来,这次就先看看什么是引用数据类型?首先得满足以下条件: 在Java中,引用类型的变量非常类似于C/C++的指针.引用类型指向一个对象,指向对象的变量是引用变量.这些变量在声明时 ...
- SQL SERVER 2008 设置字段默认值为当前时间
在某些情况下需要对某条记录添加上时间戳,比如用户注册,需要记录用户的注册时间,在SQL SERVER 2008中可以通过 1. 添加新字段 2. 数据类型设置为smalldatetime 3. 默认值 ...
- golang基础之二-基本数据类型和操作符
文件名&关键字&标识符 所有go源码都是以.go结尾 标识符以字母或下划线开头,大小写敏感 下划线_是特殊标识符,用户忽略结果 保留关键字 导入包时可以设置别名 下面是保留关键字: b ...
- [知识笔记]Java 基本数据类型的大小、取值范围、默认值
数据类型 大小(字节) 范围 默认值 boolean 1/8(1bit) true/false false byte 1 -128~127 (-2^7~2^7-1) 0 short 2 -32768~ ...
- java 8种基本数据类型的默认值及所占字节数
通过一段代码来测试一下 8种基本数据类型的默认值 package dierge; public class Ceshi { int a; double b; boolean c; char d; fl ...
- java 常用基本数据类型的默认值
在使用基本数据类型作为类成员的时候,有时只初始化了而没有给变量赋值,那么此时,java会给你的变量赋一个默认初始值. boolean false char '/ ...
随机推荐
- TensorFlow学习——入门篇
本文主要通过一个简单的 Demo 介绍 TensorFlow 初级 API 的使用方法,因为自己也是初学者,因此本文的目的主要是引导刚接触 TensorFlow 或者 机器学习的同学,能够从第一步开始 ...
- YouCompleteMe报错可能是第三方库没有
git submodule update --init --recursive 到YouCompleteMe安装目录下,执行上面的命令
- unity DOTween Pro的使用--简化流程--自动播放
当gameobject setActive(true)的时候自动播放动画 1) 添加DoTween Animation. 设置动画效果, 略 选中 AutoPlay, 取消 AutoKill 2) 在 ...
- 2018-8-10-让-AE-输出-MPEG-
title author date CreateTime categories 让 AE 输出 MPEG lindexi 2018-08-10 19:17:19 +0800 2018-2-13 17: ...
- spring-boot-shiro-jwt-redis实现登陆授权功能
一.前言 在微服务中我们一般采用的是无状态登录,而传统的session方式,在前后端分离的微服务架构下,如继续使用则必将要解决跨域sessionId问题.集群session共享问题等等.这显然是费力不 ...
- 【LeetCode】链表 linked list(共34题)
[2]Add Two Numbers (2018年11月30日,第一次review,ko) 两个链表,代表两个整数的逆序,返回一个链表,代表两个整数相加和的逆序. Example: Input: ( ...
- [BZOJ3625][Codeforces Round #250]小朋友和二叉树 多项式开根+求逆
https://www.lydsy.com/JudgeOnline/problem.php?id=3625 愉快地列式子.设\(F[i]\)表示权值为\(i\) 的子树的方案数,\(A[i]\)为\( ...
- solr测试用的配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- promise函数
一.promise函数是干什么的 promise函数是解决异步编程调用代码逻辑编写过于复杂的问题的,当网络请求非常复杂时,就会出现回调地狱,这样如果将这些代码写在一起就会看起来很复杂,且不利于阅读,如 ...
- EDA课设-交通灯-Verilog版----FPGA--004
分得到析四个状态: S1: 主干道(绿灯亮) ,支干道(亮红灯):--40S S1: 主干道 (黄灯亮) ,支干道(亮红灯):--4S S1: 主干道 (亮红灯),支干道(绿灯亮):--20S S1: ...