16

Go 学习笔记 02 | 基本数据类型以及 byte 和 rune 类型

 3 years ago
source link: https://studygolang.com/articles/31684
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一、基本数据类型

unsafe.Sizeof() 查看不同长度的整型在内存中的存储空间。

类型转换,高位向低位转换要注意溢出。

数字字面量语法。

64 位系统中 Go 语言中浮点数默认是 float64

二、Golang 中 float 精度丢失问题

利用第三方包:github.com/shopspring/decimal

bool 类型变量的默认值为 false。

Go 语言不允许将整型强制转换为布尔型,布尔型无法参与数值运算,也无法与其他类型进行转换。

三、字符串

转义字符

  • \n 表示换行
  • \\ 表示输出 \

多行字符串

  • 使用反引号 ` 表示多行。

一个汉字占用三个字节。

+ 可以拼接字符串,如有多行拼接,则 + 写在右边, Sprintf 可以拼接字符串赋值给一个变量。

Split 分割字符串,参数:第一个是拆分字符串,第二个是以什么分隔符进行拆分。

Join 把切片链接成字符串,参数:第一个是切片数组,第二个是以什么链接符进行链接。

Index 是返回下标位置,查找不到返回 -1。

四、byte 和 rune 类型

Golang 中定义字符为 int 类型,直接输出 byte 的时候输出的是这个字符对应的 ASCII 值。

Golang 中汉字是使用 UTF-8 编码,Unicode 编码后对应的十进制值是 int 类型。每个汉字占三个字节,每个字母占一个字节。

unsafe.Sizeof() 不能查看 string 类型数据所占用的存储空间。

循环输出字符串中的字符

  • byte:不能正确输出汉字
  • rune:能正确输出汉字

修改字符串

如果有汉字,需要通过 rune 将 string 强制类型转换成 rune ,输出的时候再转换成 string。

五、类型转换

建议从低位转换成高位。

六、算数运算符

Golang 中数值型不能直接转换成 bool 型,bool 型也不能直接转换成数值型。

自增 ++ 和自减 -- 不是 Golang 中的算数运算符,属于单独语句。

Golang 中 ++-- 只能单独使用,不能赋值。Golang 中 ++-- 只能写在后面,不能写在前面。

取余:余数 = 被除数 - (被除数 / 除数) * 除数

练习

交换两个变量的值:

  • 用中间变量:tmp = a, a = b, b = tmp
  • 不能使用中间变量:a = a + b, b = a - b, a = a - b

七、位运算

左移 n 位:乘以 2 的 n 次方

右移 n 位:除以 2 的 n 次方

八、参考教程

Golang 教程 P6-P12

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

eUjI7rn.png!mobile

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK