随着互联网的不断发展,程序员能够掌握的编程语言也在不断的增加,而今天我们就通过案例分析来了解一下,go语言编程的特点都有哪些。
一、go语言概述
Go在语法上类似于C语言,但它具有C语言没有的优势,如内存安全、垃圾回收、结构化的类型和CSP风格的并发性。
二、go语言特点
Go的设计受C语言的影响,但更加简单和安全。该语言包括如下特点:
采用动态语言中比较常见的语法和环境模式:
可选的简明变量声明和通过类型推理进行初始化(如果使用x:=0而不是intx=0;或varx=0;)。
快速编译。
远程包管理(goget)和在线包文档。
针对特定问题的独特方法:
内置的并发基元:轻量级处理机制(goroutines)、通道和select语句。
用接口系统代替虚拟继承,用类型嵌入代替非虚拟继承。
默认情况下,由一个工具链生成静态链接的原生二进制文件,没有外部依赖关系。
希望保持语言规范足够简单,程序员容易掌握。
2.1简洁的语法
Go的语法包含C语言中保持代码简洁性和可读性的语法特点。
2.1.1变量声明
引入了一个联合声明/初始化操作符,允许程序员写出i:=3或s:="Hello,world!",而不需要指定使用的变量类型。
这与C语言中的inti=3;和constchar*s="Hello,world!";形成鲜明对比。
2.1.2分号隐含
分号仍然是终止语句,但在行结束时是隐含的。
2.1.3返回多值
在Go中,一个函数方法可以返回多个值,返回一个结果和错误err组合对是向调用者提示错误的常规方式。
2.1.4范围表达式
Go的范围表达式允许在数组、动态数组、字符串、字典和通道上进行简洁的迭代,在C语言中,有三种循环来实现这个功能。
2.2类型系统
2.2.1内置的类型
Go有许多内置的类型,包括数字类型(byte、int64、float32等)、booleans和字符串(string)。
字符串是不可更改的。
内置的运算符和关键字(而不是函数)提供了串联、比较和UTF-8编码/解码。
2.2.2结构类型
记录类型可以用struct关键字定义。
2.2.3数组类型
对于每个类型T和每个非负整数常数n,都有一个数组类型,表示为[n]T,因此,不同长度的数组有不同的类型。
动态数组可以作为"Slice"使用,如对于某类型T,表示为[]T。这些数组有一个长度和一个容量,容量规定了何时需要分配新的内存来扩展数组。若干个Slice可以共享它们的底层内存。
2.2.4指针
所有类型都可以定义指针,T类型的指针可定义为*T。地址抽取和隐式访问使用&和*操作符,这跟C语言一样,或者隐式的通过方法调用或属性访问使用。
除了标准库中的特殊的unsafe.Pointer类型,一般指针没有指针运算。
2.2.5映射类型
对于一个组合对类型K、V,类型map[K]V是将类型K键映射到类型V值的哈希表的类型。
2.2.6通道类型
chanT是一个通道,允许在并发的Go进程之间发送T类型的值。
2.2.7显式类型
除了对接口的支持外,Go的类型系统是显示的:类型关键字可以用来定义一个新的命名类型,它与其他具有相同布局的命名类型(对于结构体来说,相同的成员按相同的顺序排列)不同。