文章分类 - GOLANG
摘要:基本类型先看几个简单的例子:变量 i 的类型是 int,在内存中使用一个有符号32位单元表示(所有的图片显示了32位的内存布局;在当前的实现中,只有指针类型在64位机器上有扩展——int 仍然是32位——尽管一个实现可以选择使用64位。)变量 j 的类型是 int32,因为有明确的类型转换。即使 i 和 j 有着相同的类型结构,他们的类型是不同的;赋值 i = j 会产生类型错误,因此必须写成显式的类型转换:i = int(j)。变量 f 的类型是 float,在当前的实现中代表这一个32位的浮点值。它和 int32 有着相同的内存封装,但内部布局不同。结构和指针现在开始加快速度了。变量 by
阅读全文
摘要:反射的规则在运行时反射是程序检查其所拥有的结构,尤其是类型的一种能力;这是元编程的一种形式。它同时也是造成混淆的重要来源。在这篇文章中将试图明确解释在 Go 中的反射是如何工作的。每个语言的反射模型都不同(同时许多语言根本不支持反射)。不过这篇文章是关于 Go 的,因此接下来的内容“反射”这一词表示“在 Go 中的反射”。类型和接口由于反射构建于类型系统之上,就从复习一下 Go 中的类型开始吧。Go 是静态类型的。每一个变量有一个静态的类型,也就是说,有一个已知类型并且在编译时就确定下来了:int,float32,*MyType,[]byte 等等。如果定义type MyInt intvar
阅读全文