Go 语言函数式编程系列教程(三) —— 数据类型篇:概述及布尔类型

栏目: PHP · 发布时间: 5年前

内容简介:Go 语言内置对以下这些基本数据类型的支持:相较于 PHP,多出了字符类型(单个字符)、错误类型和复数类型,PHP 通过系统级配置函数此外,Go 语言也支持以下这些复合类型:

支持的数据类型

Go 语言内置对以下这些基本数据类型的支持:

  • 布尔类型:bool
  • 整型:int8、byte、int16、int、uint、uintptr 等
  • 浮点类型:float32、float64
  • 复数类型:complex64、complex128
  • 字符串:string
  • 字符类型:rune
  • 错误类型:error

相较于 PHP,多出了字符类型(单个字符)、错误类型和复数类型,PHP 通过系统级配置函数 error_reporting 定义应用的错误报告级别,不区分单独的字符与字符串类型,Go 还对整型的精度及是否有符号(正数还是负数)做了区分,PHP 则只有一个 int 类型标识整型数据,另外 PHP 通过 floatdouble 来区分浮点型精度,这一点也是 Go 语言 和 PHP 不一样的地方。

此外,Go 语言也支持以下这些复合类型:

  • 指针(pointer)
  • 数组(array)
  • 切片(slice)
  • 字典(map)
  • 通道(chan)
  • 结构体(struct)
  • 接口(interface)

PHP 并不支持指针类型,对于数组、切片、字典,PHP 则通过 数组类型 一网打尽,后面三个类型 PHP 也不支持,通道类型主要用于并发编程,后面介绍 Go 语言并发编程的时候会详细讨论,结构体类似 PHP 中的类(class),Go 语言还把接口单独作为一个类型提出来,后面介绍 Go 语言面向对象编程的时候会详细介绍这两个类型的使用。

布尔类型

Go 语言中的布尔类型与 PHP 差不多,关键字为 bool ,可赋值且只可以赋值为预定义常量 truefalse 。示例代码如下:

var v1 bool 
v1 = true 
v2 := (1 == 2) // v2 也会被推导为 bool 类型

与 PHP 不同的是,Go 是强类型语言,变量类型一旦确定,就不能将其他类型的值赋值给该变量。因此,布尔类型不能接受其他类型的赋值,也不支持自动或强制的类型转换。以下的示例是一些错误的用法,会导致编译错误:

var b bool 
b = 1 // 编译错误 
b = bool(1) // 编译错误

PHP 中则支持类似的用法:

$b = true;
$b = 1;
$b = (bool)1;

在 Go 语言中,以下的用法才是正确的:

var b bool 
b = (1!=0) // 编译正确 
fmt.Println("Result:", b) // 打印结果为Result: true

此外,由于强类型的缘故,Go 语言在进行布尔值真假判断时,对值的类型有严格限制,在 PHP 这种弱类型语言中,以下这些值在进行布尔值判断的时候(使用非严格的 == 比较符)都会被认为是 false

FALSE
0
0.0

而在 Go 语言中则不然,甚至不同类型的值直接不能使用 ==!= 运算符进行比较,在编译期就会报错,比如下面这段代码:

b := (false == 0);

在编译的时候就会报如下错误:

cannot convert 0 (type untyped number) to type bool
invalid operation: false == 0 (mismatched types bool and int)

同样, ! 运算符也不能作用于非布尔类型值。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

复杂:信息时代的连接、机会与布局

复杂:信息时代的连接、机会与布局

罗家德 / 中信出版集团股份有限公司 / 2017-8-1 / 49.00 元

信息科技一方面创造了人们互联的需要,另一方面让人们在互联中抱团以寻找归属感,因此创造了大大小小各类群体的认同和圈子力量的兴起,即互联的同时又产生了聚群,甚至聚群间的相斥。要如何分析这张网?如何预测它的未来变化?如何在网中寻找机会,实现突围?本书提出了4个关键概念──关系、圈子、自组织与复杂系统: • 关系 关系是人与人的连接,又可以被分为强关系和弱关系。强关系就是和你拥有亲密关系的人,......一起来看看 《复杂:信息时代的连接、机会与布局》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码