c++ 结构体中不同类型的初始值_Go入门系列(二)基本数据类型

e30c8730b384c19232c8a47bf4a4b862.gif

目录:
一、数据类型
二、常量变量

一、数据类型

对比python,我们必须意识到GoLang是一门强类型语言。

1、布尔型

在 Go 中,布尔值的类型为 bool,值是 true 或 false,默认为 false。

func main() {
var a bool
fmt.Println(a)
}
#输出
false
2、数字类型
  • 整型

类型    取值范围
int8 -128到127
uint8 0到255
int16 -32768到32767
uint16 0到65535
int32 -2147483648到2147483647
uint32 0到4294967295
int64 -2^(64-1)到2^(64-1)-1
uint64 0到2^64-1

所谓无符号类型即为非负类型。

  • 浮点型
    float32和float64.它们的算术规范由IEEE754浮点数国际标准定义, 该浮点数规范被所有现代的CPU支持。

  • 复数
    complex64和complex128,分别对应float32和float64两种浮点数精度。内置的complex函数用于构建复数,内建的real和imag函数分别返回复数的实部和虚部。

func main() {
var x complex64 = complex(1, 2)
var y complex64 = complex(3, 4)
fmt.Println(x*y)
fmt.Println(real(x*y))
fmt.Println(imag(x*y))
}
#输出
(-5+10i)
-5
10
  • 其它

byte  与uint8等价
rune 与int32等价
uint 取值位数等于cpu位数(32/64)
int 取值位数等于cpu位数(32/64)
uintptr 无符号整型,用于存放一个指针

在go>=1.9时,对于数字类型,无需定义int及float32、float64,系统会自动识别。
尤其是int类型,在使用goland时,会直接给予“类型可忽略”的提示。

func main() {
var a =1
var b =1.3333
fmt.Println(a,b)
}
#输出
1 1.3333

讲到这里,想顺便提一下go的一个特性,严格的内存管理。在之前做白盒测试的时候,有一个低风险项:声明但未使用,严格来讲对系统并没有直接危害,但确实对内存真实的浪费。这个问题在Go这里不再纠结了,如果声明却不使用,语法检查不会通过。

func main() {
var a =1
var b =2
fmt.Println(a)
}
#输出
# command-line-arguments
b declared and not used
3、字符串类型
  • 定义
    同样,我们可以看到字符串的声明是不需要特别声明类型的。
    对比python,字符串类型必须使用双引号,单引号不可。

8d865f3f0df08c4e20ca472e48cd896a.png

此外,多行声明须使用反引号,但是这个时候转义符不再生效,/允悲。

func main() {
var a =`终究
还是一个人
扛下了所有`

fmt.Println(a)
}
#输出
终究
还是一个人
扛下了所有
  • 组合
    支持加号连接,尽可能灵活即可。

func main() {
var a = "rabbit"
var b = "mask"
a += b
fmt.Println(a+"!")
}
#输出
rabbitmask!

二、常量变量

1、变量
上面交代了那么久的数据类型,最终还是为这里服务的,最基础的变量定义方式为:var identifier type,此外也可灵活运用贴合Go的习惯。

  • 定义类型而不初始化
    变量默认为零值,当然布尔型默认为false上面已经提过了。

  • 直接初始化自动判定变量类型
    这个无论是上面的int还是字符串都很好的体现了这一点。

  • 省略 var, identifier := value格式替代。这种不带声明格式的只能在函数体中出现,不可以用于全局变量的声明与赋值,使用操作符 :=可以高效地创建一个新的变量,称之为初始化声明。同第二种方式,其类型根据初始化数值自动判定。

func main() {
a := "rabbitmask"
fmt.Println(a)
}
#输出
rabbitmask

2、常量
定义方式为const identifier [type] = value
同样,可省略type自动判定。
支持批量常量定义,未赋值则默认为前面的初始值。

func main() {
const (
a=1
b=2
c
d
)
fmt.Println(a,b,c,d)
}
  • iota 常量生成器
    此外可借助iota批量生成常量。

func main() {
type num int
const (
a num=iota
b
c
d
)
fmt.Println(a,b,c,d)
}
#输出
0 1 2 3

bf2796048fe0026aaf0a3b67001b9a88.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值