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)
}

你可能感兴趣的:(Golang,Go,Golang,Go语言基础)