golang预定义类型

13641329565 · · 634 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

表格内类型都是“预定义类型”也叫“简单类型”。 | 类型名称 | 类型 |说明| | -------- | -------- |-------- | | 布尔 | 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

634 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传