内置基础类型
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
是 uint8
的别称。
需要注意的一点是,这些类型的变量之间不允许互相赋值或操作,不然会在编译时引起编译器报错。
如下的代码会产生错误: invalid operation: a + b (mismatched types int8 and int32)
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 := "Konichiwa" // 同上
frenchHello = "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
world
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论