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

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

参考资源:


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

查看所有标签

猜你喜欢:

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

Chinese Authoritarianism in the Information Age

Chinese Authoritarianism in the Information Age

Routledge / 2018-2-13 / GBP 115.00

This book examines information and public opinion control by the authoritarian state in response to popular access to information and upgraded political communication channels among the citizens in co......一起来看看 《Chinese Authoritarianism in the Information Age》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

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

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具