Go语言与数据库开发:01-03

在本文中,我们将介绍go的基础数据类型。

虽然从底层而言,所有的数据都是由比特组成,但计算机一般操作的是固定大小的数,如整
数、浮点数、比特数组、内存地址等。进一步将这些数组织在一起,就可表达更多的对象,
例如数据包、像素点、诗歌,甚至其他任何对象。Go语言提供了丰富的数据组织形式,这依
赖于Go语言内置的数据类型。这些内置的数据类型,兼顾了硬件的特性和表达复杂数据结构
的便捷性。

Go语言将数据类型分为四类:基础类型、复合类型、引用类型和接口类型。
本文将介绍基础类型,包括:数字、字符串和布尔型;


整型

有符号类型: int8、int16、int32和int64

无符号类型: uint8、uint16、uint32和uint64

无符号的整数类型uintptr

对应特定CPU平台机器字大小的有符号和无符号整数int和uint;这两种类型都有同样的大小,32或64bit;
其中有符号整数采用2的补码形式表示,也就是最高bit位用作表示符号位

+运算符还有一个与赋值相结合的对应运算符+=,可以用于简化赋值语句。
%取模运算符

二元比较运算符,比较表达式的结果是布尔类型:

== equal to
!= not equal to
< less than
<= less than or equal to

greater than
= greater than or equal to

对于整数,+x是0+x的简写,-x则是0-x的简写;对于浮点数和复数,+x就是x,-x则是x 的负数。

bit位操作运算符:

& 位运算 AND
| 位运算 OR
^ 位运算 XOR
&^ 位清空 (AND NOT)
<< 左移

右移

一般来说,需要一个显式的转换将一个值从一种类型转化位另一种类型,并且算术和逻辑运
算的二元操作中必须是相同的类型。
否则,需要显式转换成显式转型为一个常见类型,比如:
var compote = int(apples) + int(oranges)

对于每种类型T,如果转换允许的话,类型转换操作T(x)将x转换为T类型。许多
整形数之间的相互转换并不会改变数值;它们只是告诉编译器如何解释这个值。但是对于将
一个大尺寸的整数类型转为一个小尺寸的整数类型,或者是将一个浮点数转为整数,可能会
改变数值或丢失精度。

浮点数到整数的转换将丢失任何小数部分,然后向数轴零方向截断。

时间: 2025-01-30 04:44:19

Go语言与数据库开发:01-03的相关文章

Go语言与数据库开发:01-01

一.前言 Google的三位大牛,为了解决在21世纪多核和网络化环境下越来越复杂的编程问题而发明了go语言, 从2007年9月开始设计和实现,于2009年的11月对外正式发布.从版本的发布历史来看,go语言是从 Ken Thompson发明的B语言.Dennis M. Ritchie发明的C语言逐步演化过来的,是C语言家族的成员, 因此很多人将Go语言称为21世纪的C语言. 纵观这几年来的发展趋势,Go语言已经成为云计算.云存储时代最重要的基础编程语言. Go语言有着和C语言类似的语法,但是它不

Go语言与数据库开发:01-09

包和工具 Go语言有超过100个的标准包(译注:可以用 go list std | wc -l 命令查看标准包的具体数 目),标准库为大多数的程序提供了必要的基础构件.在Go的社区,有很多成熟的包被设 计.共享.重用和改进,目前互联网上已经发布了非常多的Go语音开源包,它们可以通过http://godoc.org 检索. Go还自带了工具箱,里面有很多用来简化工作区和包管理的小工具. 包简介 任何包系统设计的目的都是为了简化大型程序的设计和维护工作,通过将一组相关的特性放 进一个独立的单元以便于

Go语言与数据库开发:01-04

讲完基础数据类型之后,我们接着学习复合数据类型. 复合数据类型,它是以不同的方式组合基本类型可以构造出来的复合数据类型. 几个基本的复合数据类型: 数组,是由同构的元素组成--每个数组元素都是完全相同的类型; 结构体,则是由异构的元素组成的; 数组和结构体都是有固定内存大小的数据结构; slice和map则是动态的数据结构,它们将根据需要动态增长: 数组: 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成. 因为数组的长度是固定的,因此在Go语言中很少直接使用数组.

Go语言与数据库开发:01-02

接下来,开始了解go语言的程序结构,基础要打牢. Go语言和其他编程语言一样,一个大的程序是由很多小的基础构件组成的.变量保存值,简 单的加法和减法运算被组合成较复杂的表达式.基础类型被聚合为数组或结构体等更复杂的 数据结构.然后使用if和for之类的控制语句来组织和控制表达式的执行流程.然后多个语句被 组织到一个个函数中,以便代码的隔离和复用.函数以源文件和包的方式被组织. . 关于命名: 在Go中是区分大小写的:关键字不能用于自定义名字: Go语言的风格是尽量使用短小的名字,对于局部变量尤其

Go语言与数据库开发:01-08

基于共享变量的并发 .竞争条件 在一个线性(就是说只有一个goroutine的)的程序中,程序的执行顺序只由程序的逻辑来决定. 例如,我们有一段语句序列,第一个在第二个之前(废话),以此类推.在有两个或更多 goroutine的程序中,每一个goroutine内的语句也是按照既定的顺序去执行的,但是一般情况 下我们没法去知道分别位于两个goroutine的事件x和y的执行顺序,x是在y之前还是之后还是 同时发生是没法判断的.当我们能够没有办法自信地确认一个事件是在另一个事件的前面或 者后面发生的

Go语言与数据库开发:01-07

在本节,我们来说一下并发. 并发程序指同时进行多个任务的程序,随着硬件的发展,并发程序变得越来越重要 Go语言中的并发程序可以用两种手段来实现.尽管Go对并发的支持是众多强力特性之一,但跟踪调试并发程序还是很困难,在线性程序中 形成的直觉往往还会使我们误入歧途. . Goroutines 在Go语言中,每一个并发的执行单元叫作一个goroutine.设想这里的一个程序有两个函数, 一个函数做计算,另一个输出结果,假设两个函数没有相互之间的调用关系.一个线性的程 序会先调用其中的一个函数,然后再调

Go语言与数据库开发:01-06

Go语言包含了对OOP语言的支持,接下来我们来看看Go语言中的方法. 尽管没有被大众所接受的明确的OOP的定义,从我们的理解来讲,一个对象其实也就是一个 简单的值或者一个变量,在这个对象中会包含一些方法,而一个方法则是一个一个和特殊类 型关联的函数.一个面向对象的程序会用方法来表达其属性和对应的操作,这样使用这个对 象的用户就不需要直接去操作对象,而是借助方法来做这些事情. 在函数声明时,在其名字之前放上一个变量,即是一个方法. 这个附加的参数会将该函数附加到这种类型上,即相当于为这种类型定义了

Go语言与数据库开发:01-10

测试 现在的程序已经远比Wilkes时代的更大也更复杂,也有许多技术可以让软件的复杂性可得到控制.其中有两种技术在实践中证明是比较有效的.第一种是代码在被正式部署前需要进行代码评审.第二种则是测试 我们说测试的时候一般是指自动化测试,也就是写一些小的程序用来检测被测试代码(产品代码)的行为和预期的一样,这些通常都是精心设计的执行某些特定的功能或者是通过随机性的输入要验证边界的处理. 软件测试是一个巨大的领域.测试的任务可能已经占据了一些程序员的部分时间和另一些程序员的全部时间.和软件测试技术相关

Go语言与数据库开发:01-11

反射 Go语言提供了一种机制在运行时更新变量和检查它们的值.调用它们的方法和它们支持的内在操作,但是在编译时并不知道这些变量的具体类型.这种机制被称为反射.反射也可以让我们将类型本身作为第一类的值类型处理. Go语言的反射特性,看看它可以给语言增加哪些表达力,以及在两个至关重要的API是如何用反射机制的:一个是fmt包提供的字符串格式功能,另一个是类似encoding/json和encoding/xml提供的针对特定协议的编解码功能. 反射是一个复杂的内省技术,不应该随意使用,因此,尽管上面这些