golang快速入门[8.2]-自动类型推断的秘密
前文
- golang快速入门[1]-go语言导论
- golang快速入门[2.1]-go语言开发环境配置-windows
- golang快速入门[2.2]-go语言开发环境配置-macOS
- golang快速入门[2.3]-go语言开发环境配置-linux
- golang快速入门[3]-go语言helloworld
- golang快速入门[4]-go语言如何编译为机器码
- golang快速入门[5.1]-go语言是如何运行的-链接器
- golang快速入门[5.2]-go语言是如何运行的-内存概述
- golang快速入门[5.3]-go语言是如何运行的-内存分配
- golang快速入门[6.1]-集成开发环境-goland详解
- golang快速入门[6.2]-集成开发环境-emacs详解
- golang快速入门[7.1]-项目与依赖管理-gopath
- golang快速入门[7.2]-北冥神功—go module绝技
- golang快速入门[8.1]-变量类型、声明赋值、作用域声明周期与变量内存分配
前言
- 在上文中我们学习了变量的各种概念和go语言中的类型系统
- 我们将在本文中学习到:
- 什么是自动类型推断
- 为什么需要自动类型推断
- go语言中自动类型推断的特点与陷阱
- go语言在编译时是如何进行自动类型推断的
类型推断(Type inference)
- 类型推断是编程语言在编译时自动解释表达式数据类型的能力,通常在函数式编程的语言(例如Haskell)中存在,类型推断的优势主要在于可以省略类型,这使编程任务更加容易。
- 明确的指出变量的类型在编程语言中很常见,编译器在多大程度上可以做到这一点,因语言而异。例如,某些编译器可以推断出值:变量,函数参数和返回值。
- go语言作为静态类型语言在编译时就需要知道变量的类型
类型推断的优势
- 使编译器支持诸如类型推断之类的东西有两个主要的优势。首先,如果使用得当,它可以使代码更易读,例如,可以将如下C ++代码:
vector<int> v;
vector<int>::iterator itr = v.iterator();
变为:
vector<int> v;
auto itr = v.it