Go基础-内置基础类型
Boolean
在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
,这两种类型的长度相同,但具体长度取决于不同编译器的实现.Go里面也有直接定义好位数的类型:rune
,int8
,int16
,int32
,int64
和byte
,uint8
,uint16
,uint32
,uint64
.其中rune
是int32
的别称,byte
是uint
的别称
需要注意的一点是,这些类型的变量之间不允许互相赋值或操作,不然会编译报错
如下的代码会产生错误: invalid operation: a + b (mismatched types int8 and int32)
var a int8
var b int32
c := a+ b
另外,尽管int的长度是32bit,但int与int32并不可以互用
浮点数的类型有float32
和float64
两种(没有float
类型),默认是float64
.
Go还指出复数.它的默认类型是complex128
(64位实数+64位虚数).如果需要小一些的,也有complex64
(32位实数+32位虚数).复数的形式为RE+IMi
,其中RE
是实数部分,IM
是虚数部分,而最后的i
是虚数单位.下面是一个使用复数的例子
//示例代码
var frenchHello string //声明变量为字符串的一般方法
var emptyString string = "" //声明了一个字符串变量,初始化为空字符串
func test(){
no,yes,maybe := "no","yes","maybe" //简短声明,同时声明多个变量
japaneseHello := "Konichiwa" //同上
frebchHello = "Bonjour" //这种事常规赋值
}
在Go中字符串是不可变的,例如下面的代码编译会出错:cannot assign to s[0]
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字符串,即字符串在代码中的形式就是打印时的形式,它没有字符转义,换行也将原样输出,例如
hello
wirld
错误类型
Go内置有一个error
类型,专门用来处理错误信息,Go的package
里面还专门有一个包errors
来处理错误:
err := errors.New("emit macho dwarf: elf header corrupted")
if err != nil {
fmt.Print(err)
}