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

jianggushi · · 542 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

布尔类型 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

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

参考资源:


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:jianggushi

查看原文:Go语言笔记 | 06-基本类型

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

542 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传