十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Go语言作为出现比较晚的一门编程语言,在其原生支持高并发、云原生等领域的优秀表现,像目前比较流行的容器编排技术Kubernetes、容器技术Docker都是用Go语言写的,像Java等其他面向对象的语言,虽然也能做云原生相关的开发,但是支持的程度远没有Go语言高,凭借其语言特性和简单的编程方式,弥补了其他编程语言一定程度上的不足,一度成为一个热门的编程语言。
新安网站建设公司创新互联,新安网站设计制作,有大型网站制作公司丰富经验。已为新安1000多家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的新安做网站的公司定做!
最近在学习Go语言,我之前使用过C#、Java等面向对象编程的语言,发现其中有很多的编程方式和其他语言有区别的地方,好记性不如烂笔头,总结一下,和其他语言做个对比。这里只总结差异的地方,具体的语法不做详细的介绍。
种一棵树最好的时间是十年前,其次是现在。
3)变量初始化时候可以和其他语言一样直接在变量后面加等号,等号后面为要初始化的值,也可以使用变量名:=变量值的简单方式
3)变量赋值 Go语言的变量赋值和多数语言一致,但是Go语言提供了多重赋值的功能,比如下面这个交换i、j变量的语句:
在不支持多重赋值的语言中,交换两个变量的值需要引入一个中间变量:
4)匿名变量
在使用其他语言时,有时候要获取一个值,却因为该函数返回多个值而不得不定义很多没有的变量,Go语言可以借助多重返回值和匿名变量来避免这种写法,使代码看起来更优雅。
假如GetName()函数返回3个值,分别是firstName,lastName和nickName
若指向获得nickName,则函数调用可以这样写
这种写法可以让代码更清晰,从而大幅降低沟通的复杂度和维护的难度。
1)基本常量
常量使用关键字const 定义,可以限定常量类型,但不是必须的,如果没有定义常量的类型,是无类型常量
2)预定义常量
Go语言预定义了这些常量 true、false和iota
iota比较特殊,可以被任务是一个可被编译器修改的常量,在每个const关键字出现时被重置为0,然后在下一个const出现之前每出现一个iota,其所代表的数字会自动加1.
3)枚举
1)int 和int32在Go语言中被认为是两种不同类型的类型
2)Go语言定义了两个浮点型float32和float64,其中前者等价于C语言的float类型,后者等价于C语言的double类型
3)go语言支持复数类型
复数实际上是由两个实数(在计算机中使用浮点数表示)构成,一个表示实部(real)、一个表示虚部(imag)。也就是数学上的那个复数
复数的表示
实部与虚部
对于一个复数z=complex(x,y),就可以通过Go语言内置函数real(z)获得该复数的实部,也就是x,通过imag(z)获得该复数的虚部,也就是y
4)数组(值类型,长度在定义后无法再次修改,每次传递都将产生一个副本。)
5)数组切片(slice)
数组切片(slice)弥补了数组的不足,其数据结构可以抽象为以下三个变量:
6)Map 在go语言中Map不需要引入任何库,使用很方便
Go循环语句只支持for关键字,不支持while和do-while
goto语句的语义非常简单,就是跳转到本函数内的某个标签
今天就介绍到这里,以后我会在总结Go语言在其他方面比如并发编程、面向对象、网络编程等方面的不同及使用方法。希望对大家有所帮助。
本文主要介绍了Go语言中文件读写的相关操作。
文件是什么?
计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。
os.Open() 函数能够打开一个文件,返回一个 *File 和一个 err 。对得到的文件实例调用 close() 方法能够关闭文件。
为了防止文件忘记关闭,我们通常使用defer注册文件关闭语句。
Read方法定义如下:
它接收一个字节切片,返回读取的字节数和可能的具体错误,读到文件末尾时会返回 0 和 io.EOF 。 举个例子:
使用for循环读取文件中的所有数据。
bufio是在file的基础上封装了一层API,支持更多的功能。
io/ioutil 包的 ReadFile 方法能够读取完整的文件,只需要将文件名作为参数传入。
os.OpenFile() 函数能够以指定模式打开文件,从而实现文件写入相关功能。
其中:
name :要打开的文件名 flag :打开文件的模式。 模式有以下几种:
perm :文件权限,一个八进制数。r(读)04,w(写)02,x(执行)01。
当读取91.2 MB文件时,read1耗时43ms,read2耗时99ms。
查看源码:
读取文件主要是通过 Read(p []byte) (n int, err error) :
官方文档中关于该接口方法的说明:
结论:
ReadFile(filename string)方法之所以速度快的原因就是先计算出file文件的size,在初始化对应size大小的buff,传入ReadRead(p []byte) 来读取字节流
1. 部署简单
Go
编译生成的是一个静态可执行文件,除了glibc外没有其他外部依赖。这让部署变得异常方便:目标机器上只需要一个基础的系统和必要的管理、监控工具,完全不需要操心应用所需的各种包、库的依赖关系,大大减轻了维护的负担。
2. 并发性好
Goroutine和channel使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题。单个Go应用也能有效的利用多个CPU核,并行执行的性能好。
3. 良好的语言设计
从学术的角度讲Go语言其实非常平庸,不支持许多高级的语言特性;但从工程的角度讲,Go的设计是非常优秀的:规范足够简单灵活,有其他语言基础的程序员都能迅速上手。更重要的是
Go 自带完善的工具链,大大提高了团队协作的一致性。
4. 执行性能好
虽然不如 C 和 Java,但相比于其他编程语言,其执行性能还是很好的,适合编写一些瓶颈业务,内存占用也非常省。
1、Sublime text
这个文本编辑器在编程界极为普遍,它并非一个完全成熟的IDE,但它具备了很多语言的扩展插件,比如Pyhon、lua等,其中有一个插件GoSublime专门针对Go语言,提供了语法高亮、自动补全等功能,这些功能使Sublime Text称为一个很实用的Go IDE。
2、IntelliJ
由Jetbrains提供,在Java开发者中更为流行,其自带的Go插件支持语法高亮显示、代码补全、自动编译以及子库支持,这就使使用者可以很方便地将项目拆分成多个包,可以在一个单独的IDE中浏览它。它有个很好用的功能,插件使用了突出显示来显示未使用的变量或包。
3、LiteIDE
目前也是一个专门针对Go的IDE了,功能很全面,具备语法高亮、自动补全、自动编译、调试、包浏览及管理。调试器在后台使用的gdb,这样可以方便地打印变量值、查看当前堆栈信息。
4、Intype
是仅Windows下支持的文本编辑器,具备有限的语法高亮支持和特定的高亮显示设置。
5、Netbeans
Netbeans内建支持了大量语言,同时具备Go插件,从而可以同创建正常项目一样,创建Go源文件,除了语法高亮以外,其Go插件并不支持其他特殊功能,如何使用IDE编译Go文件还不得而知。
6、Eclipse
最受欢迎的IDE,GoClipse插件在Eclipse中添加了IDE功能来支持Go,GoClipse提供了可配置的语法高亮显示、自动文档补全、自动编译以及最重要的实验调试支持。
7、TextMate
是一个Mac OS下的文本编辑器,可扩展它以突出显示Go代码,并提供源代码片段。
8、Komodo Edit
来自ActiveState的开源代码编辑器,基于Monzilla 7.0且支持跨平台,支持多种语言,但免费版的Komodo功能有限,它的golang插件komodo-go提供了基本的语法高亮、代码补全功能。