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

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

内容简介: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)

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


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

查看所有标签

猜你喜欢:

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

HTML5秘籍(第2版)

HTML5秘籍(第2版)

[美] Matthew MacDonald / 李松峰、朱巍、刘帅 / 人民邮电出版社 / 2015-4 / 89.00元

不依赖插件添加音频和视频,构建适用于所有浏览器的播放页面。 用Canvas创建吸引人的视觉效果,绘制图形、图像、文本,播放动画,运行交互游戏。 用CSS3将页面变活泼,比如添加新奇的字体,利用变换和动画添加吸引人的效果。 设计更出色的Web表单,利用HTML5新增的表单元素更加高效地收集访客信息。 一次开发,多平台运行,实现响应式设计,创建适配桌面计算机、平板电脑和智能手机......一起来看看 《HTML5秘籍(第2版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具