分享
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
表格内类型都是"预定义类型"也叫"简单类型"。
| 类型名称 | 类型 |说明|
| -------- | -------- |-------- |
| 布尔 | bool | |
| 字符串 | string | |
| 整型 | int,int8,int16,int32,int64<br>uint,uint8,uint16,uint32,uint64<br>uintptr| |
| 浮点 | float32<br>float64 | |
| 复数 | complex64 <br> complex128 | |
| 字符 | byte (int别名) <br> rune (int32别名) | |
| 接口 | error | 你没看错<br>golang中error类型是预定义类型 |
```go
// /usr/local/go/src/builtin/builtin.go
// 源码中error是用type定义的,为什么是预定义类型,而不是自定义类型?见下方解释。
type error interface {
Error() string
}
```
```go
package main
import (
"errors"
"fmt"
)
// 一个自定义类型
type xiaoyiError error
func main() {
var xyErr xiaoyiError
err := errors.New("xy err")
xyErr = err
fmt.Println(xyErr)
// 先了解多个赋值规则中的一个:
// 如果两个变量具有相同的底层类型,且二者至少有一个是未命名类型,即可赋值。
// 解:
// 可知:xyErr的类型是xiaoyiError,并且xiaoyiError是自定义类型。
// 可知:errors.New("xy err") 返回的是error类型。
// error 与 xiaoyiError 是不同的类型。
// 如果想将error赋值给xiaoyiError,需保证至少有一个是未命名类型,且底层类型相同。
// 如果error类型算作自定义类型,就不可能赋值成功。因为二者都是自定义类型,不符合至少有一个未命名类型的规则。
// 而上段代码可以赋值成功。
// 所以error是预声明类型,且xiaoyiError的底层类型与error底层类型都是error。
}
```
有疑问加站长微信联系(非本文作者))
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信1106 次点击
上一篇:Go数组&切片使用
下一篇:Go 日常开发常备第三方库和工具
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传