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. go笔记(go中的方法调用)

    最近接触go语言  发现和java的方法调用有些类似但又有自己的注意点 go的包我理解为则是隔离的最小模块 先在src目录下创建main.go文件  package为main,然后在src下创建mod ...

  2. [POI 2014]PTA-Little Bird

    Description 题库连接 给你 \(n\) 棵树,第 \(i\) 棵树的高度为 \(d_i\).有一只鸟从 1 号树出发,每次飞跃不能超过 \(k\) 的距离.若飞到下一棵树的高度大于等于这一 ...

  3. 随机游走模型(Random Walk)

    给定了一个时间顺序向量\(z_1,...,z_T\),rw模型是由次序r来定义的,\(z_t\)仅取决于前\(t-r\)个元素.当r = 1时为最简单的RW模型. 给定了向量的其他元素,\(z_t\) ...

  4. [CMake笔记] CMake向解决方案添加源文件兼头文件

    回顾 在上一篇笔记里总结的时候说到,aux_source_directory这个函数在添加源码文件时,是不会把头文件添加进去的,这里就介经一下另外一个方法,也是我一直使用的. 添加文件*.cpp与*. ...

  5. C语言中的结构体是怎么定义的_怎么使用?

    结构体的定义 // 定义结构体st struct st{ int a; // 成员a int b; // 成员b }; #include <stdio.h> struct st{ int ...

  6. 最全Redis面试题

    1.什么是Redis? 2.Redis相比memcached有哪些优势? 3.Redis支持哪几种数据类型? 4.Redis主要消耗什么物理资源? 5.Redis的全称是什么? 6.Redis有哪几种 ...

  7. 超级方便的linux命令手册

    超级方便的linux命令手册 NO 分类 PS1 命令名 用法及参数 功能注解 对应章节 1 文件管理 # ls ls -a 列出当前目录下的所有文件,包括以.头的隐含文件     文件管理 # ls ...

  8. JS数组精简的十三个技巧

    1.删除数组的重复项 第一种方式 var fruits = ['banana', 'apple', 'orange', 'apple', 'orange', 'grape', 'watermelon' ...

  9. HDU 5524:Subtrees

    Subtrees  Accepts: 60  Submissions: 170  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 13107 ...

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

    这次我们要做一个日期类Date类 主要目的是    1.  熟悉-->构造不同参数的函数  2.善于利用已有的函数!! 题目要求: Date类要求 可设定年月日 可转换为字符串,并可指定分隔符, ...