这是我参与8月更文挑战的第1天,活动详情查看:8月更文挑战
Go语言
Go语言是一门静态类型的语言
也是一门面向过程的语言, 不要带着面向对象的思想去学习Go
代码的编写非常简洁, 在我的眼中它有C语言的简练和容易上手, 有可以媲美C的运行速度
也有着Java语言的强大, 内置了很多系统标准库, 而不是在依赖其它的第三方库和框架
如果你掌握了Go, 那么你就掌握了未来!!!
布尔型
bool, 取值只能是true或者false
Go语言中对true和false的常量定义
const (
true = 0 == 0 // Untyped bool.
false = 0 != 0 // Untyped bool.
)
整型
int - 有符号, 根据运行时所在操作系统而决定
int8 - 可表示范围: -27 ~ 27-1
int16 - 可表示范围: -215 ~ 215-1
int32 - 可表示范围: -231 ~ 231-1
int64 - 可表示范围: -263 ~ 263-1
uint - 无符号, 根据运行时所在操作系统而决定
uint8 - 可表示范围: 0 ~ 28-1
uint16 - 可表示范围: 0 ~ 216-1
uint32 - 可表示范围: 0 ~ 232-1
uint64 - 可表示范围: 0 ~ 264-1
// 整型
var i int = 10
fmt.Println(i)
// 如果给一个无符号整数赋值为一个负数, 则会报错
//var ui uint = -10;
//fmt.Println(ui)
浮点型
float32, 提供小数点后6位的精度
float64, 提供小数点后15位的精度
// float32浮点数
var f float32 = 3.14
fmt.Println(f)
// float32浮点数, 四舍五入的舍弃小数点6位之后的小数
var f2 float32 = 1.123456789
fmt.Println(f2)
// float64浮点数
var f3 float64 = 1.123456789
fmt.Println(f3)
复数
complex64
实数部分和虚数部分都是float32类型
complex128
实数部分和虚数部分都是float64类型
// 复数
var c1 complex64 = 3 + 5i
fmt.Println(c1)
var c2 complex64 = complex(5, 7)
fmt.Println(c2)
// 获取实数部分
var re float32 = real(c2)
fmt.Println(re)
// 获取虚数部分
var im float32 = imag(c2)
fmt.Println(im)
字符串类型
Go语言中的字符串采用UTF-8编码来表示Unicode字符
当我们定义一个字符串时, 如果没有赋值, 那它就是一个长度为0的字符串 字符串的值是不可改变的
var s string = "hi, go!"
fmt.Println(s)
// 空字符串, 打印长度为0
var snil string;
fmt.Println(len(snil))
uintptr
一个无符号的整型值, 可以表示任意地址并进行数值计算
byte
等同于uint8, 为了表示ASCII码表的字符
rune
等同于int32, 在处理Unicode中的字符时会用到
nil
可以表示指针, 通道, 函数, 接口, 映射, 切片的零值
所以nil必须赋值给一个指针类型的变量
派生类型
指针类型 数组类型 结构体类型 通道类型 函数类型 切片类型 接口类型 映射类型
不同进制数的表示形式
// 二进制: 0b为前缀, 例如: 0b100 表示十进制的5
fmt.Println(0b100)
// 八进制: 0为前缀, 例如 012 表示十进制的 10
fmt.Println(012)
// 十六进制: 0x为前缀, 例如: 0x23 表示十进制的35
fmt.Println(0x23)