计算机语言

语言是人与人沟通的表达方式。 计算机语言是人与计算机之间沟通交互的方式。

机器语言

一定位数的二进制的0和1组成的序列,也称为机器指令;

机器指令的集合就是机器语言;

与自然语言差异太大,难学、难懂、难写、难记、难查错。

汇编语言

用一些助记符号替代机器指令,称为汇编语言。ADD A,B 指的是将寄存器A的数与寄存器B的数相 加得到的数放到寄存器A中;

汇编语言写好的程序需要汇编程序转换成机器指令;

汇编语言只是稍微好记了些,可以认为就是机器指令对应的助记符。只是符号本身接近自然语言。

低级语言

机器语言、汇编语言都是面向机器的语言,都是低级语言;

不同机器是不能通用的,不同的机器需要不同的机器指令或者汇编程序。

高级语言

接近自然语言和数学语言的计算机语言 高级语言首先要书写源程序,通过编译程序把源程序转换成机器指令的程序;

1954年正式发布的Fortran语言是最早的高级语言,本意是公式翻译 人们只需要关心怎么书写源程序,针对不同机器的编译的事交给编译器关心处理;

语言越高级,越接近人类的自然语言和数学语言;

语言越低级,越能让机器理解;

高级语言和低级语言之间需要一个转换的工具:编译器、解释器。

编译语言

把源代码转换成目标机器的CPU指令;

C、C++等语言的源代码需要针对当前CPU平台进行本地编译

解释语言

解释后转换成字节码,运行在虚拟机上,解释器执行中间代码;

Java、Python、C#的源代码需要被解释器编译成中间代码(Bytecode),在虚拟机上运行 Go语言是强类型、静态编译型语言 数据声明必须指定明确类型;

不支持隐式类型转换,类型转换必须强制 代码编译成本地可执行代码,不需要虚拟机来运行 支持垃圾回收。

高级语言的发展

非结构化语言

编号或标签、GOTO,子程序可以有多个入口和出口;

有分支、循环。

结构化语言

任何基本结构只允许是唯一入口和唯一出口;

顺序、分支、循环,废弃GOTO。

面向对象语言

更加接近人类认知世界的方式,万事万物抽象成对象,对象间关系抽象成类和继承 封装、继承、多态;

函数式语言 古老的编程范式,应用在数学计算、并行处理的场景。引入到了很多现代高级语言中 函数是“一等公民”,高阶函数。

Go语言基础

注释

// 单行注释

/* xxxx */ 多行注释,编译器忽略该区间,其间都被认为是注释内容。虽然Go支持,但很少使用。

函数、结构体等习惯把注释写在上面;包注释会写在package之上。

打印一个hello world

// TODO: 将来完成,推荐
// NOTE: 请注意
// Deprecated: 告知已经过期,建议不要使用。未来某个版本可能移除

命名规范

标识符采用CamelCase驼峰命名法,如果只在包内可用,就采用小驼峰命名;如果要在包外可见,就采用大驼峰命名;

简单循环变量可以使用i、j、k、v等;

条件变量、循环变量可以是单个字母或单个单词,Go倾向于使用单个字母。Go建议使用更短小;

常量驼峰命名即可,在其他语言中,常量多使用全大写加下划线的命名方式,Go语言没有这个要求 对约定俗成的全大写,例如PI;

函数/方法的参数、返回值应是单个单词或单个字母

函数可以是多个单词命名;

类型可以是多个单词命名;

方法由于调用时会绑定类型,所以可以考虑使用单个单词;

包以小写单个单词命名,包名应该和导入路径的最后一段路径保持一致;

接口优先采用单个单词命名,一般加er后缀。Go语言推荐尽量定义小接口,接口也可以组合。

关键字

break        default      func         interface    select
case         defer        go           map          struct
chan         else         goto         package      switch
const        fallthrough  if           range        type
continue     for          import       return       var

预定义标识符

 

Types:
 any bool byte comparable
 complex64 complex128 error float32 float64
 int int8 int16 int32 int64 rune string
 uint uint8 uint16 uint32 uint64 uintptr
Constants:
 true false iota
Zero value:
 nil
Functions:
 append cap close complex copy delete imag len
 make new panic print println real recover

标识符

一个名字,本质上是个字符串,用来指代一个值;

只能是大小写字母、数字、下划线,也可以是Unicode字符;

不能以数字开头;

不能是Go语言的关键字;

尽量不要使用“预定义标识符”,否则后果难料;

大小写敏感;

标识符建议: 不要使用中文,非必要不要使用拼音,尽量遵守上面的命名规范,或形成一套行之有效的命名规则。

字面常量

它是值,不是标识符,但本身就是常量,不能被修改。 Go语言中,boolean、rune、integer、float、complex、string都是字面常量。其中,rune、 integer、float、complex常量被称为数值常量。

常量

常量:使用const定义一个标识符,它所对应的值,不允许被修改。 对常量并不要求全大写加下划线的命名规则。

注意:Go语言的常量定义,必须是能在编译器就要完全确定其值,所以,值只能使用字面常量。这和其 他语言不同!例如,在其他语言中,可以用常量标识符定义一个数组,因为常量标识符保证数组地址不 变,而其内元素可以变化。但是Go根本不允许这样做。

 批量写iota从0开始,即使第一行没有写iota,iota也从第一行开始从0开始增加

 

posted on 2023-05-15 17:53  自然洒脱  阅读(49)  评论(0编辑  收藏  举报