Golang语言--布尔型和数值类型

布尔类型

布尔类型是 bool。Go语言提供了内置的布尔值true和flase。Go语言支持标准的逻辑和比较操作。这些操作的结果都是布尔值。

布尔值和表达式可以用于if语句中,for语句的条件中以及switch语句的case的判断中。

逻辑操作符:

!:逻辑非操作符;

||:逻辑或操作符;

&&:逻辑与操作符

比较操作符。

<,>, ==,!=, <=, >=

数值类型

----整形和浮点型

Go语言提供大量内置的数值类型。众所周知的类型如int,这个类型根据你的系统决定适当的长度。在32位系统上是32位,在64位系统上是64位。因此在Go语言中,int和int32是不同类型。如果你希望明确其长度,可以使用int32或者int64等等。

完整的整数类型(符号和无符号)是int8,int16,int32,int64 和 byte,uint8,uint16,uint32,uint64。其中byte 是 uint8 的别名。

浮点类型的值有 float32 和 float64 (没有 float 类型)。64 位的整数和浮点数总是 64 位的,即便是在 32 位的架构上。

整形变量的默认赋值是0,浮点型变量的默认赋值是0.0

需要注意的是:这些类型全部都是独立的,并且混合使用这些类型向变量赋值会引起编译器错误。例如:

package main

func main(){

var a int //通用整数类型

var b int32 // 32位整数类型

a = 15

b =a + a // 混合这些类型是非法的,这会导致编译异常

b = b + 5 // 5是常量(未定义类型),所以没有问题

}

如果不同数值类型之间进行数值运算或者比较操作时,需要进行类型转换。通常将类型转换成最大的类型以防止精度丢失。类型转换采用type(value)的形式。当将类型转换为小的类型时,为了防止防止精度丢失,我们可以创建合适的函数。例如:将int型转换为uint8

func Uint8FromInt(n int) (uint8, error) {

if 0 <= n && n <= math.MaxUint8 {// conversion is safe

return uint8(n), nil

}

return 0, fmt.Errorf(“%d is out of the uint8 range”, n)

}

----复数类型

Go原生支持复数。复数有两种类型:complex64(实部虚部都是一个float32)和complex128 (实部虚部都是一个float64)。复数的形式为:re+im i。其中re为实部,im为虚部。

复数可以使用内置的complex()函数或者包含虚部数值的常量来创建。复数的各个部分可以使用内置函数real()和imag()函数获得。

例如:

var c1 complex64 = 5 + 10i

fmt.Printf(“The value is: %v”, c1)

// 这里会输出: 5 + 10i

c := complex(50,100);

fmt.Printf(“The value is: %v”, c1)

//这里会输出: 50 + 100i

复数支持所有的算术操作符。唯一可以用于复数的比较操作符号是 == 和!=。

标准库中有一个复数包 math/cmplx提供复数各种通用的操作函数。

如果不需要考虑内存问题,尽量使用complex128类型,因为标准库中所有函数都是使用complex128类型。

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-05-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏积累沉淀

Java设计模式(十六)----迭代子模式

迭代子模式 一、 概述 二、 结构 1.白箱聚集与外禀迭代子 2.黑箱聚集与内禀迭代子 主动...

21710
来自专栏Golang语言社区

[Go语言]实现可以枚举的map

在golang-nuts上看到有人问怎么样去枚举一个map。在go语言层面,并不支持支持枚举map,也就是说你不能获得一个枚举器在任意时刻去枚举这个map,只能...

3727
来自专栏Java技术分享

使用beanUtils操纵javabean

package com.lan.beanutils; import java.lang.reflect.InvocationTargetExcepti...

2179
来自专栏Kevin-ZhangCG

Java集合总结

1492
来自专栏Android知识点总结

Java容器源码攻坚战--第一战:Iterator

961
来自专栏Android机器圈

数据结构----线性表顺序和链式结构的使用(c)

PS:在学习数据结构之前,我相信很多博友也都学习过一些语言,比如说java,c语言,c++,web等,我们之前用的一些方法大都是封装好的,就java而言,里面使...

943
来自专栏有趣的Python

4-玩转数据结构-链表

链表是重点,也是难点。它是最简单动态数据结构;后续我们还会学习更多的,比如二分搜索树,平衡二叉树,红黑树,后面很多的动态数据结构都可以在理解链表的基础上学习。

4911
来自专栏LinkedBear的个人空间

唠唠SE的集合-04——ArrayList 原

        ArrayList底层维护了一个Object[] 用于存储对象,默认数组的长度是10。

1206
来自专栏python3

Python变量类型

有符号整数,就是C语言中所指的整型,也就是数学中的整数,它的大小与安装的解释器的位数有关

1392
来自专栏无题

Java容器各实现类的底层实现原理概述

Java容器各实现类的底层实现原理概述 ArrayList实现原理要点概括 参考文献:http://zhangshixi.iteye.com/blog/67...

4286

扫码关注云+社区

领取腾讯云代金券