Go语言笔记 | 06-基本类型

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

内容简介:布尔类型的值只能是常量布尔类型和数字 0,1 不能直接转换,必须通过编程实现,golang 提供了多种大小的整数类型,也区分了有符号数和无符号数。

布尔类型 bool

布尔类型的值只能是常量 true 或者 false

var b bool = true
var c = false

布尔类型和数字 0,1 不能直接转换,必须通过编程实现, iffor 语句的条件部分都是布尔类型。

// btoi returns 1 if b is true and 0 if false.
func btoi(b bool) int {
    if b {
        return 1
    }
    return 0
}

整数类型

golang 提供了多种大小的整数类型,也区分了有符号数和无符号数。

几种确定范围的整数类型:

uint8    8-bit    0 to 255
uint16   16-bit   0 to 65535
uint32   32-bit   0 to 4294967295
uint64   64-bit   0 to 18446744073709551615

int8     8-bit    -128 to 127
int16    16-bit   -32768 to 32767
int32    32-bit   -2147483648 to 2147483647
int64    64-bit   -9223372036854775808 to 9223372036854775807

byte     uint8 的别名
rune     int32 的别名

byte 是 uint8 的等价类型,一般用来表示一个原始的数据而不是一个小的整数

rune 是 int32 的等价类型,通常用于表示一个Unicode码点

还有 3 个依赖于编译器具体实现和平台架构的类型:

uint    32-bit or 64-bit
int     32-bit or 64-bit
uintptr 没有指定大小,要求足以容纳指针,底层编程时需要

不同类型之间如果进行运算,需要进行显示的强制类型转换,语言本身不会做隐示类型转换。

浮点数

golang 中的浮点数同样也是依据 IEEE-754 标准,提供了两种类型的浮点数。

float32 32-bit +-1e-45 to +- 3.4e38  精确到小数点后 7 位
float64 64-bit +-4.9e-324 to 1.8e308 精确到小数点后 15 位

float64 类型表示的范围更广,精度更高,应该尽可能使用该类型。

math 包中的相关函数都要求 float64 类型

复数

golang 中也提供了复数类型。

complex64  64-bit   实部和虚部都是 float32
complex128 128-bit  实部和虚部都是 float64

复数的通用表示方式: re + imIre 代表实部, im 代表虚部。

内置函数 real()imag() 可以用来获取复数的实部和虚部。

字符串

golang 中提供了字符串类型 string 。字符串有两种字面值表示方式:

var a = "hello, world!\n"    // 双引号括起来,转义字符会被解释
var b = `hello, world!\n`    // 反引号括起来,所有字符原样输出

golang 中的字符串是不可变字符串,一旦创建不可修改。

var a = "hello, world!"
a[1] = 'H'    // 错误,cannot assign to a[1]

空字符串是指长度为 0 的字符串,可以使用内置函数 len() 获取字符串中的字节数目。

var a = "hello"    // len(a) == 5
var b = ""         // len(b) == 0

字符串是采用 UTF-8 编码的,该编码有一个特点就是占用的字节长度是不确定的。

ASCII 码,也就是前 256 个字符占用 1 个字节,其他字符根据情况占用 2 ~ 4 个字节。

字符串支持按下标索引取对应的字节,但是这种情况对纯 ASCII 码字符串才有意义,下标索引要满足 0 <= index < len(s)

var s = "hello, world"
fmt.Printf("%c", s[0]) // h

支持切片截取操作 s[i:j] 截取从 ij (不包含j)的字符生成一个新的字符串。

var s = "hello, world"
fmt.Println(s[0:5]) // hello

支持字符串连接操作 + 两个字符串相加得到一个新的字符串。

var s = "hello,"
fmt.Println(s + "world") // hello,world

支持字符串相等比较 == 按顺序进行字典序比较

参考资源:


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

查看所有标签

猜你喜欢:

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

零基础学Java Web开发

零基础学Java Web开发

刘聪 编 / 机械工业出版社 / 2008-1 / 59.00元

《零基础学Java Web开发:JSP+Servlet+Sfruts+Spring+Hibernte》全面讲解Java Web应用开发的编程技术,并详细介绍Java Web开发中各种常用的技术,可作为Java Web开发技术的学习指南。 《零基础学Java Web开发:JSP+Servlet+Sfruts+Spring+Hibernte》共17章,分为3篇,其中第1~12章是基础篇,讲解了......一起来看看 《零基础学Java Web开发》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具