Go语言小书 | 关于编译和语法
引言
特别鸣谢 Karl Seguin 写了这本小册子,才有今天的浅显易懂的学习。
学习时间
编译
编译是将您编写的源代码翻译成较低级语言(任一汇编语言)的过程(就像Go一样),或者其他中间语言(就像Java和c#一样)。
编译语言可能不太好使用,因为编译可能很慢。如果您必须花费几分钟或几小时等待代码编译,那么就很难快速地进行迭代。编译速度是围棋的主要设计目标之一。对于从事大型项目的人,以及我们这些习惯于解释语言提供的快速反馈周期的人来说,这是一个好消息。
编译语言往往运行得更快,可执行文件可以在不需要额外依赖的情况下运行(至少,像C、c++和Go这样直接编译成汇编的语言是这样的)。
静态类型
静态类型意味着变量必须是特定的类型(int, string, bool, []byte,等等)。这可以通过在声明变量时指定类型来实现,或者在许多情况下,让编译器推断类型(我们稍后会看一些例子)。
关于静态类型还有很多可说的,但是我相信通过查看代码可以更好地理解它。如果您习惯了动态类型语言,那么您可能会发现这很麻烦。您没有错,但是有一些优势,特别是当您将静态类型与编译相结合时。
这两者经常被混为一谈。确实,当你有一个时,你通常会有另一个,但这并不是一个硬性规定。使用严格的类型系统,编译器能够检测除了语法错误之外的问题,并进行进一步的优化。
类似C语言的语法
说一种语言有类似C的语法意味着如果你习惯了其他类似C的语言,比如C、c++、Java、JavaScript和c#,那么你会发现Go很熟悉——至少表面上是这样。例如,它表示&&用作布尔值,==用于比较等式,{和}开始和结束范围,数组索引从0开始。
类似c的语法还倾向于表示以分号结尾的行和环绕条件的括号。Go取消了这两个功能,不过括号仍然用于控制优先级。例如,if语句是这样的:
if name == "Leto" {
print("the spice must flow")
}
在更复杂的情况下,括号仍然有用:
if (name == "Goku" && power > 9000) || (name == "gohan" && power < 4000) {
print("super Saiyan")
}
除此之外,Go比c#或Java更接近C——不仅在语法方面,而且在目的方面。这反映在语言的简洁性和简单性上,希望在你学习它的时候开始变得明显。
写在最后
本文不学那么多,简单的三小节,大家做到有个了解即可。不要求背诵!
Happy coding :-)
我是@程序员小助手,持续分享编程知识,欢迎关注。
- 另类保存微信公众平台历史消息的方法 - 星标消息
- CentOS环境下Docker私有仓库搭建
- spark三种连接join
- 用firebug给firefox添加信任链接
- Elasticsearch索引别名、Filtered索引别名、Template
- 追本溯源:Oracle 只读表空间的探索实践
- firefox查看微信公众平台的数据分析时就出现不信任链接怎么办?
- spark-streaming集成Kafka处理实时数据
- 使用spark与MySQL进行数据交互的方法
- python分布式环境下的限流器
- commons-pool与commons-pool2连接池(Hadoop连接池)
- Glusterfs 文件系统
- 时过境迁:Oracle跨平台迁移之XTTS方案与实践
- Kazoo Python Zookeeper 选主
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 用Python搭建一个简单的代理池
- 用Python模拟登陆GitHub并获取信息
- APUE学习手札 编写一个与3.12节中dup2功能相同的函数,要求不调用fcntl函数,并且要有正确的出错处理
- Python教程 | 最标准的地图调用方式(国家测绘局提供数据)
- Python数据可视化:Python大佬有哪些?
- 新手一看就懂的线程池
- 「面试」破(B)站之旅
- 想过为你的应用加上skywalking(链路监控)吗?
- 结合注意力机制的UNet降水短临预报框架
- 用Python全自动下载抖音视频!
- 如何实现一个高效的启发式算法?
- Python数据可视化:豆瓣电影TOP250
- 容器化 FRP 使用方案
- 任意图像转素描:Python分分钟实现
- Python数据科学:相关分析