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的类型转换实战案例的更多相关文章

  1. Golang的进制转换实战案例

    Golang的进制转换实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用进制概述 1>.进制概述 进制也就是进位制,是人们规定的一种进位方法.举个例子:二进制就 ...

  2. Flume实战案例运维篇

    Flume实战案例运维篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Flume概述 1>.什么是Flume Flume是一个分布式.可靠.高可用的海量日志聚合系统,支 ...

  3. Golang 性能优化实战

    小结: 1. 性能查看工具 pprof,trace 及压测工具 wrk 或其他压测工具的使用要比较了解. 代码逻辑层面的走读非常重要,要尽量避免无效逻辑. 对于 golang 自身库存在缺陷的,可以寻 ...

  4. 盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和车距计算!

    摘要:基于昇腾AI异构计算架构CANN(Compute Architecture for Neural Networks)的简易版辅助驾驶AI应用,具备车辆检测.车距计算等基本功能,作为辅助驾驶入门级 ...

  5. 3.awk数组详解及企业实战案例

    awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...

  6. HTML+CSS小实战案例

    HTML+CSS小实战案例 登录界面的美化,综合最近所学进行练习 网页设计先布局,搭建好大框架,然后进行填充,完成页面布局 <html> <head> <meta htt ...

  7. python实战案例--银行系统

    stay hungry, stay foolish.求知若饥,虚心若愚. 今天和大家分享一个python的实战案例,很多人在学习过程中都希望通过一些案例来试一下,也给自己一点动力.那么下面介绍一下这次 ...

  8. php 网站301重定向设置代码实战案例

    php 网站301重定向设置代码实战案例 301重定向就是页面永久性移走的意思,搜索引擎知道这个页面是301重定向的话,就会把旧的地址替换成重定向之后的地址. 302重定向就是页面暂时性转移,搜索引擎 ...

  9. 【Vue.js实战案例】- Vue.js递归组件实现组织架构树和选人功能

    大家好!先上图看看本次案例的整体效果. 浪奔,浪流,万里涛涛江水永不休.如果在jq时代来实这个功能简直有些噩梦了,但是自从前端思想发展到现在的以MVVM为主流的大背景下,来实现一个这样繁杂的功能简直不 ...

随机推荐

  1. vue-cli 手脚架mock虚拟数据的运用,特别是坑!!!

    1.现在基本的趋势就是前后分离,前后分离就意味着当后台接口还没完成之前,前端是没有接口可以拿来调用的 ,那么mock虚拟数据就很好的解决了这一问题,前端可以直接模拟真实的数据AJAX请求! 运用 步骤 ...

  2. #P1099 树网的核 题解

    题目描述 pdf 题解 这一题,刚开始看题目感觉好像很难,题目又长……一看数据范围,呵呵. 已经给出来这是个DAG,所以不用担心连通性的问题.那么怎么做呢? 朴素的做法是把树的直径的两个端点都统计出来 ...

  3. iOS直播集成和问题总结(阿里云直播)

    https://www.jianshu.com/p/714ce954e628 最近接手公司的直播项目,对以前遗留的问题做处理和优化, 于是顺便看了下阿里云直播的文档,在下面写下对直播的理解和遇到的问题 ...

  4. vue-cli 初始化项目时开发环境中的跨域问题

    最近刚刚完成自己的毕业设计(基于Vue的信息资讯展示与管理平台),于是想整理一下过程遇到的一些问题. 项目基于Vue开发,使用 Vue-cli 初始化项目文件目录时默认占用8080端口,而我又想使用 ...

  5. 吴裕雄--天生自然HADOOP操作实验学习笔记:pagerank算法

    实验目的 了解PageRank算法 学会用mapreduce解决实际的复杂计算问题 实验原理 1.pagerank算法简介 PageRank,即网页排名,又称网页级别.Google左侧排名或佩奇排名. ...

  6. layer弹出框包含页面

    参考:http://www.cnblogs.com/zhengchenhui/p/6038865.html

  7. 通过python 构建一个简单的聊天服务器

    构建一个 Python 聊天服务器 一个简单的聊天服务器 现在您已经了解了 Python 中基本的网络 API:接下来可以在一个简单的应用程序中应用这些知识了.在本节中,将构建一个简单的聊天服务器.使 ...

  8. Android数据库高手秘籍(二):创建表和LitePal的基本用法

    原文:http://blog.jobbole.com/77157/ 上一篇文章中我们学习了一些Android数据库相关的基础知识,和几个颇为有用的SQLite命令,都是直接在命令行操作的.但是我们都知 ...

  9. MySQL更新时间

    Mysql时间加减函数为date_add().date_sub()定义和用法DATE_ADD() 函数向日期添加指定的时间间隔.DATE_SUB() 函数向日期减少指定的时间间隔.语法DATE_ADD ...

  10. java学习-初级入门-面向对象③-类与对象-类与对象的定义和使用1

    今天学习类与对象.先大致解释一下类与对象的含义. 对象:object 有物体这一概念,一切皆对象(物体),对象由静态的属性和动态的行为组成. 比如说水杯: 水杯的静态属性:材质,容量,质量,颜色 动态 ...