golang 学习笔记 1.3 基本类型

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

1.3 基本类型

更明确的数字类型命名,支持 Unicode,支持常用数据结构。

常用数据结构

支持八进制、十六进制,以及科学记数法。标准库 math 定义了各数字类型取值范围。

a, b, c, d := 071, 0x1F, 1e9, math.MinInt16

空指针值 nil,而非 C/C++ NULL

1.4 引用类型

引用类型包括 slice、map 和 channel。它们有复杂的内部结构,除了申请内存外,还需要初始化相关属性。
内置函数 new 计算类型大小,为其分配 零值内存 ,返回指针。而 make 会被编译器翻译成具体的创建函数,由其分配内存和初始化成员结构,返回 对象非指针

a := []int{0, 0, 0} // 提供初始化表达式。
a[1] = 10

b := make([]int, 3) // make slice
b[1] = 10

c := new([]int)
c[1] = 10   // Error: invalid operation: c[1] (index of type *[]int)

有关引用类型具体的内存布局,可参考后续章节。

1.5 类型转换 ( 简单记录 )

不支持隐式类型转换,即便是从窄向宽转换也不行。

var b byte = 100
var n int = b // Error: cannot use b (type byte) as type int in assignment
var n int = int(b) // 显式转换

使用括号避免优先级错误。

*Point(p) // 相当于 *(Point(p))
(*Point)(p)
<-chan int(c) // 相当于 <-(chan int(c))
(<-chan int)(c)

同样不能将其他类型当 bool 值使用。

a := 100
if a { // Error: non-bool a (type int) used as if condition
    println("true")
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:Diogoxiang

查看原文:golang 学习笔记 1.3 基本类型

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

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