让开发
成为一种享受!

2. Go语言内置基础类型

布尔类型

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

// 示例代码
var isActive bool // 全局变量声明
var enabled, disabled = true, false // 忽略类型的声明
func test() {
   var available bool // 一般声明
   valid := false // 简短声明
   available = true // 赋值操作
}

数值类型

整数类型有无符号和带符号两种。Go同时支持 int 和 uint ,这两种类型的长度相同,但具体长度取决于不同编译器的实现。当前的gcc和gccgo编译器在32位和64位平台上都使用32位来表示 int 和 uint ,但未来在64位平台上可能增加到64位。Go里面也有直接定义好位数的类型: rune , int8 , int16 , int32 , int64 和 byte , uint8 , uint16 ,uint32 , uint64 。其中 rune 是 int32 的别称, byte 是 uint8 的别称

需要注意的一点是,这些类型的变量之间不允许互相赋值或操作,不然会在编译时引起编译器报错。 如下的代码会产生错误:

var a int8
var b int32
c:=a + b

另外,尽管int的长度是32 bit, 但int 与 int32并不可以互用。

浮点数的类型有 float32 和 float64 两种(没有 float 类型),默认是 float64

Go还支持复数。它的默认类型是 complex128 (64位实数+64位虚数)。如果需要小一些的,也 有 complex64 (32位实数+32位虚数)。复数的形式为 RE + IMi ,其中 RE 是实数部分, IM 是虚数部分,而最后的 i 是虚数单位。下面是一个使用复数的例子:

var c complex64 = 5+5i
//output: (5+5i)
fmt.Printf("Value is: %v", c)

字符串

Go中的字符串都是采用 UTF-8 字符集编码。字符串是用一对双引号( “” )或反引号( )括 起来定义,它的类型是 string 。

// 示例代码
var frenchHello string // 声明变量为字符串的一般方法
var emptyString string = "" // 声明了一个字符串变量,初始化为空字符串
func test() {
   no, yes, maybe := "no", "yes", "maybe" // 简短声明,同时声明多个变量
   japaneseHello := "Ohaiou" // 同上
   frenchHello = "Bonjour" // 常规赋值
}

在Go中字符串是不可变的,例如下面的代码编译时会报错:

var s string = "hello"
s[0] = 'c'

但如果真的想要修改怎么办呢?下面的代码可以实现:

s := "hello"
c := []byte(s) // 将字符串 s 转换为 []byte 类型
c[0] = 'c'
s2 := string(c) // 再转换回 string 类型
fmt.Printf("%s\n", s2)

Go中可以使用 + 操作符来连接两个字符串:

s := "hello,"
m := " world"
a := s + m
fmt.Printf("%s\n", a)

修改字符串也可写为:

s := "hello"
s = "c" + s[1:] // 字符串虽不能更改,但可进行切片操作
fmt.Printf("%s\n", s)

如果要声明一个多行的字符串怎么办?可以通过 反引号 来声明:

m := `hello
	world`

被反引号括起的字符串为Raw字符串,即字符串在代码中的形式就是打印时的形式,它没有字符转义,换行也将原样输出。

错误类型

Go内置有一个 error 类型,专门用来处理错误信息,Go的 package 里面还专门有一个包 errors 来处理错误:

err := errors.New("emit macho dwarf: elf header corrupted")
if err != nil {
	fmt.Print(err)
}

扫码关注公众号:Java开发乐园

在聊天窗口回复:vip

输入验证码,即可永久解锁本站全部文章

扫码关注【Java开发乐园】

Java开发乐园

扫码关注【东方】

微信:东方

验证码:
赞(0) 打赏
转载请注明出处:Java开发乐园 » 2. Go语言内置基础类型

来评论一下嘛~ 抢沙发

评论前必须登录!

 

我愿终生等候,换你刹那凝眸

留点🐾印

打赏即是一种肯定,谢谢您的肯定

支付宝扫一扫打赏

微信扫一扫打赏