为什么要使用 Go 语言?Go 语言的优势在哪里?1、简单易学 。
Go语言的作者本身就很懂C语言,所以同样Go语言也会有C语言的基因,所以对于程序员来说,Go语言天生就会让人很熟悉,容易上手 。
2、并发性好 。
Go语言天生支持并发,可以充分利用多核 , 轻松地使用并发 。这是Go语言最大的特点 。
描述
Go的语法接近C语言,但对于变量的声明有所不同 。Go支持垃圾回收功能 。Go的并行模型是以东尼·霍尔的通信顺序进程(CSP)为基础 , 采取类似模型的其他语言包括Occam和Limbo,但它也具有Pi运算的特征 , 比如通道传输 。
在1.8版本中开放插件(Plugin)的支持,这意味着现在能从Go中动态加载部分函数 。
与C相比,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了 切片(Slice) 型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持 。
测试开发之系统篇-按需创建测试虚拟机首先 , 我们来了解一下KVM虚拟机有关的几个概念和工具 。
新建KVM虚拟机时,可以指定另一磁盘文件作为BackingFile。BackingFile是一个只读的虚拟磁盘基础映像,可以在多个虚拟机间进行共享 。基于BackingFile创建和运行虚拟机时 , 只会在自己的磁盘文件中增量地写入文件,从而提高效率、节省磁盘和维护成本 。
虚拟机快照保存了虚拟机在某个指定时间点的状态 , 当我们在自动化测试过程中遭遇问题或错误时 , 可以利用快照保存、并恢复到执行中的某个时间点 。借助BackingFile机制 , 虚拟机支持形如以下的多层依赖的快照链 。
可使用以下命令 , 将处于快照链中的某个虚机,导出形成一个独立的磁盘映像文件,其不再依赖其它映像 。
假设我们在用户的工作目录中,建立了以下目录 。
下面用一个例子,给大家介绍下快速创建测试虚拟机的方法 。
(1)按照上一篇文章中的步骤,创建一个Win10虚拟机;
(2)在虚拟机中,安装好工作中用到的测试软件;
(3)使用以下命令,新建一个共享工具磁盘;
(4)挂载共享磁盘到虚拟机,复制工具和文件到该盘中;
(5)移除该虚拟机 , 确认对话框中 , 请选择不删除相关磁盘文件;
(6)移动原虚机主磁盘文件到基础镜像目录,如
kvm/base/windows/win10/x64-pro-zh_cn.qcow2 。
(7)执行以下命令 , 以上述基础镜像作为BackingFile,创建新的虚拟机磁盘;
(8)图形界面中,新建测试虚拟机,挂在新建的虚拟机和共享磁盘 。
除了使用图形界面的qemu-manager软件,这里也提供一种命令行的方法,大家可用于测试平台的代码中 。
(9)导出虚拟机XML配置文件
(10)修改XML配置文件中的以下字段:nameuuidvcpumemory和currentMemorymac address第1块disk的source file
(11)在第1块disk的Elemnt中,加入以下BackingFile有关的内容:
【go语言uuid go语言为什么突然火了】(12)如需要用页面VNC访问虚拟机桌面 , 找到XML的graphics元素,修改成以下内容 。
(13)使用以下命令定义虚拟机 。
(14)使用以下命令启动虚拟机 。
(15)使用以下命令获取虚拟机的VNC端口编号,在VNC软件中使用”5900 该数字“的端口,访问虚拟机远程桌面 。
另外,本人使用GO语言实现了基于libvirt接口的虚拟机管理有关功能 , 此开源项目旨在为大家提供一个基于KVM虚拟机和Docker容器的、按需测试环境管理平台,详情请参照GitHub上的easysoft/zagent项目 。
常用命令:
Go语言基础语法(一)本文介绍一些Go语言的基础语法 。
先来看一个简单的go语言代码:
go语言的注释方法:
代码执行结果:
下面来进一步介绍go的基础语法 。
go语言中格式化输出可以使用 fmt 和 log 这两个标准库 ,
常用方法:
示例代码:
执行结果:
更多格式化方法可以访问中的fmt包 。
log包实现了简单的日志服务,也提供了一些格式化输出的方法 。
执行结果:
下面来介绍一下go的数据类型
下表列出了go语言的数据类型:
int、float、bool、string、数组和struct属于值类型,这些类型的变量直接指向存在内存中的值;slice、map、chan、pointer等是引用类型,存储的是一个地址,这个地址存储最终的值 。
常量是在程序编译时就确定下来的值,程序运行时无法改变 。
执行结果:
执行结果:
Go 语言的运算符主要包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符以及指针相关运算符 。
算术运算符:
关系运算符:
逻辑运算符:
位运算符:
赋值运算符:
指针相关运算符:
下面介绍一下go语言中的if语句和switch语句 。另外还有一种控制语句叫select语句,通常与通道联用,这里不做介绍 。
if语法格式如下:
if ... else :
else if:
示例代码:
语法格式:
另外 , 添加 fallthrough 会强制执行后面的 case 语句 , 不管下一条case语句是否为true 。
示例代码:
执行结果:
下面介绍几种循环语句:
执行结果:
执行结果:
也可以通过标记退出循环:
--THE END--
为什么要使用 Go 语言,Go 语言的优势在哪里部署简单 。Go编译生成的是一个静态可执行文件,除了glibc外没有其他外部依赖 。这让部署变得异常方便:目标机器上只需要一个基础的系统和必要的管理、监控工具,完全不需要操心应用所需的各种包、库的依赖关系,大大减轻了维护的负担 。这和Python有着巨大的区别 。由于历史的原因 , Python的部署工具生态相当混乱【比如setuptools,distutils,pip,
buildout的不同适用场合以及兼容性问题】 。官方PyPI源又经常出问题,需要搭建私有镜像 , 而维护这个镜像又要花费不少时间和精力 。
并发性好 。Goroutine和channel使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题 。单个Go应用也能有效的利用多个CPU核,并行执行的性能好 。这和Python也是天壤之比 。多线程和多进程的服务端程序编写起来并不简单,而且由于全局锁GIL的原因,多线程的Python程序并不能有效利用多核,只能用多进程的方式部署;如果用标准库里的multiprocessing包又会对监控和管理造成不少的挑战【我们用的supervisor管理进程,对fork支持不好】 。部署Python应用的时候通常是每个CPU核部署一个应用,这会造成不少资源的浪费,比如假设某个Python应用启动后需要占用100MB内存,而服务器有32个CPU核,那么留一个核给系统、运行31个应用副本就要浪费3GB的内存资源 。
良好的语言设计 。从学术的角度讲Go语言其实非常平庸,不支持许多高级的语言特性;但从工程的角度讲,Go的设计是非常优秀的:规范足够简单灵活,有其他语言基础的程序员都能迅速上手 。更重要的是Go自带完善的工具链 , 大大提高了团队协作的一致性 。比如gofmt自动排版Go代码,很大程度上杜绝了不同人写的代码排版风格不一致的问题 。把编辑器配置成在编辑存档的时候自动运行gofmt , 这样在编写代码的时候可以随意摆放位置 , 存档的时候自动变成正确排版的代码 。此外还有gofix,
govet等非常有用的工具 。
执行性能好 。虽然不如C和Java,但通常比原生Python应用还是高一个数量级的,适合编写一些瓶颈业务 。内存占用也非常省 。
关于go语言uuid和go语言为什么突然火了的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 斗鱼直播手势,斗鱼直播手势有哪些
- 模拟侏罗纪公园2游戏攻略,侏罗纪世界公园模拟器
- 法硕复试chatgpt,法硕复试时间
- mysql怎么链接驱动 mysql驱动怎么写
- 拍摄vlog的初心是什么,vlog拍摄者叫什么
- 毕业设计指导网站建设,毕业设计网站制作教程
- excel图表点如何变化,excel图表的点怎么变小
- c语言几大函数 c语言中有哪些函数类型
- linuxext3命令的简单介绍