Golang的类型转换实战案例
Golang的类型转换实战案例
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.数据类型概述
基础数据类型概述,博主推荐阅读:
布尔型:
https://www.cnblogs.com/yinzhengjie2020/p/12246294.html
整型:
https://www.cnblogs.com/yinzhengjie2020/p/12246804.html
浮点型:
https://www.cnblogs.com/yinzhengjie2020/p/12247502.html
字符型:
https://www.cnblogs.com/yinzhengjie2020/p/12250350.html
字符串型:
https://www.cnblogs.com/yinzhengjie2020/p/12250787.html 高级/复合数据类型概述,博主推荐阅读: 温馨提示:
向上转型:
表示从较小的数据类型向较大的数据类型转换,比如将字节(byte)转换成int32,将int32转换成float64。
在Java中,如果一个byte类型和一个int类型进行算数运算的话,Java会默认对byte类型的变量进行隐式向上转型,即将byte对应的变量转换成int类型来进行计算哟~
但是,在Go语言中进行算数运算符操作时,要求元素的数据类型必须一致才能进行算数运算,且Go语言不会自动隐式向上转型,需要手动显式向上转型。 向下转型:
和向上转型相反,即从较大的数据类型向较小的数据类型转换,比如从float64类型转换成byte类型,就会出现高位截断的情况,也就是我们俗称的精度丢失。
无论是Java语言还是Go语言中想要向下转型就得显式转换。
二.数据类型转换案例实战
1>.向上转型案例
package main import (
"fmt"
) func main() { /*
疫情期间我家周围的物美超市大白菜的价格竟然涨到了2.75元人民币/500g,你们呢?
*/
Chinese_cabbage_price := 2.75 //自动推导浮点型默认是float64类型
weight := //自动推导整形默认是int类型
fmt.Printf("Chinese_cabbage_price的类型为:[%T],Chinese_cabbage_price的值为:%.2f\n", Chinese_cabbage_price, Chinese_cabbage_price)
fmt.Printf("weight的类型为:[%T],weight的值为:%d\n", weight, weight)
/*
我们知道Chinese_cabbage_price的类型默认是float64类型,weight的类型默认是int类型。 Go语言和Java不同,Go语言不会进行隐式向上转换类型,无论是向上还是向下转型都需要手动执行。 综上所述,我们使用float64(weight)显式向上转型,即将weight的类型由int类型转换为float64类型,这样就可以进行算数运算符操作啦,计算结果如下所示。
*/
Total_price := Chinese_cabbage_price * float64(weight)
fmt.Printf("大白菜单价是%.2f元/500g,您购买了%d斤,总价为:[%.2f]元人名币\n", Chinese_cabbage_price, weight, Total_price)
}

2>.向下转型案例
package main import (
"fmt"
) func main() { /*
疫情期间我家周围的物美超市大白菜的价格竟然涨到了2.75元人民币/500g,你们呢?
*/
Chinese_cabbage_price := 2.75 //自动推导浮点型默认是float64类型
weight := //自动推导整形默认是int类型
fmt.Printf("Chinese_cabbage_price的类型为:[%T],Chinese_cabbage_price的值为:%.2f\n", Chinese_cabbage_price, Chinese_cabbage_price)
fmt.Printf("weight的类型为:[%T],weight的值为:%d\n", weight, weight) /*
我们知道Chinese_cabbage_price的类型默认是float64类型,weight的类型默认是int类型。 Go语言和Java不同,Go语言不会进行隐式向上转换类型,无论是向上还是向下转型都需要手动执行。 综上所述,我们使用int(Chinese_cabbage_price)显式向下转型,即将Chinese_cabbage_price的类型由float64类型转换为int类型,这样可能会导致数据精度丢失,计算结果如下所示。
*/
Total_price := int(Chinese_cabbage_price) * weight
fmt.Printf("大白菜单价是%.2f元/500g,您购买了%d斤,总价为:[%.d]元人名币\n", Chinese_cabbage_price, weight, Total_price)
}

3>.int和int相关类型在进行计算式需要进行类型转换
package main
import "fmt"
func main() {
var a int =
var b int64 =
fmt.Printf("a的类型为%T,a的值为%d\n", a, a)
fmt.Printf("b的类型为%T,b的值为%d\n", b, b)
/*
注意运算符的优先级,会先执行加法算数运算符,在执行逗号运算符
int和int相关类型在进行计算式需要进行类型转换,如下所示。
*/
fmt.Printf("a + b = %d\n", int64(a)+b)
}

Golang的类型转换实战案例的更多相关文章
- Golang的进制转换实战案例
Golang的进制转换实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用进制概述 1>.进制概述 进制也就是进位制,是人们规定的一种进位方法.举个例子:二进制就 ...
- Flume实战案例运维篇
Flume实战案例运维篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Flume概述 1>.什么是Flume Flume是一个分布式.可靠.高可用的海量日志聚合系统,支 ...
- Golang 性能优化实战
小结: 1. 性能查看工具 pprof,trace 及压测工具 wrk 或其他压测工具的使用要比较了解. 代码逻辑层面的走读非常重要,要尽量避免无效逻辑. 对于 golang 自身库存在缺陷的,可以寻 ...
- 盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和车距计算!
摘要:基于昇腾AI异构计算架构CANN(Compute Architecture for Neural Networks)的简易版辅助驾驶AI应用,具备车辆检测.车距计算等基本功能,作为辅助驾驶入门级 ...
- 3.awk数组详解及企业实战案例
awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...
- HTML+CSS小实战案例
HTML+CSS小实战案例 登录界面的美化,综合最近所学进行练习 网页设计先布局,搭建好大框架,然后进行填充,完成页面布局 <html> <head> <meta htt ...
- python实战案例--银行系统
stay hungry, stay foolish.求知若饥,虚心若愚. 今天和大家分享一个python的实战案例,很多人在学习过程中都希望通过一些案例来试一下,也给自己一点动力.那么下面介绍一下这次 ...
- php 网站301重定向设置代码实战案例
php 网站301重定向设置代码实战案例 301重定向就是页面永久性移走的意思,搜索引擎知道这个页面是301重定向的话,就会把旧的地址替换成重定向之后的地址. 302重定向就是页面暂时性转移,搜索引擎 ...
- 【Vue.js实战案例】- Vue.js递归组件实现组织架构树和选人功能
大家好!先上图看看本次案例的整体效果. 浪奔,浪流,万里涛涛江水永不休.如果在jq时代来实这个功能简直有些噩梦了,但是自从前端思想发展到现在的以MVVM为主流的大背景下,来实现一个这样繁杂的功能简直不 ...
随机推荐
- 关于Android Studio中点9图的编译错误问题
Android中的点9图想必大家都非常熟悉了,能够指定背景图片的缩放区域和文本内容的显示区域,常见如QQ聊天界面的背景气泡这种文本内容不固定并需要适配的应用场景. 这里也给大家准备了一张图,详细介绍了 ...
- matplotlib 柱状图 Bar Chart 样例及参数
def bar_chart_generator(): l = [1,2,3,4,5] h = [20, 14, 38, 27, 9] w = [0.1, 0.2, 0.3, 0 ...
- 安装哪个python版本比较好
四.电脑是32位选择第一个,64为选择第二个
- git - 节点树理解
1.如下图 最左边黑色线是当前分支节点 每个点代表一次提交 2.当执行merge prd的时候 会把其他分支的节点都merge到你的分支同时产生右边的每条节点线. 3.每个版本都会与某条版本线上的一个 ...
- Number()、parseInt()、parseFloat()、~~、~
一.Number() 如果是Boolean值,true和false值将分别被转换为1和0. 如果是数字值,只是简单的传入和返回. 如果是null值,返回0. 如果是undefined,返回NaN. 如 ...
- 144、Java链表之定义一个Node类并输出
01.代码如下: package TIANPAN; class Node { // 每一个链表实际上就是由多个节点组成的 private String data; // 要保存的数据 private ...
- 139、Java内部类之使用this访问外部类属性
01.代码如下: package TIANPAN; class Outer { // 外部类 private String msg = "Hello World !"; class ...
- ODT珂朵莉树
关于ODT,据说是毒瘤lxl发明的,然后毒瘤鱼鱼因为我用ODT误导人D了我一回-- 这是一种基于 \(set\) 的暴力数据结构. 在使用时请注意,没看见这2东西千万别用-- 1.保证数据随机 2.有 ...
- day12-Python运维开发基础(推导式、生成器与生成器函数)
1. 推导式(列表推导式.集合推导式.字典推导式) # ### 推导式 : 通过一行循环判断,遍历出一系列数据的方式是推导式 """ 推导式一共三种: 列表推导式,集合推 ...
- 如何对接网建SMS短信通短信验证码接口
1首先注册登录网建SMS网站 http://www.smschinese.cn/ 2.下载Java代码 3.JAVA调用 import java.io.UnsupportedEncodingExce ...