GO语言简介

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。

与C++相比,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了切片(Slice) 型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持。Go 2.0版本将支持泛型。

Go环境搭建

1、要搭建Go语言开发环境,我们第一步要下载go的开发工具包

安装包下载地址为:https://golang.org/dl/

如果打不开可以使用这个地址:

golang.google.cn

Downloads - The Go Programming Language

打开之后根据自己的操作系统下载对应版本的安装包。开发工具包又分为安装版和压缩版,安装版的工具包双击打开会出现安装向导,选择安装的路径,会自动设置好环境变量等信息,用起来比较方便一些。这里选择安装版的工具包进行安装。

2、安装Go

①.双击运行安装文件,然后设置安装目录,点击开始安装就可以了。使用安装版的工具包安装完成后会自动添加好GOPATH的环境变量,如果是使用压缩版安装的需要手动添加GOPATH(刚刚安装的go路径)环境变量,并且在PATH变量中添加;%USERPROFILE%\go\bin。

②.打开终端,输入 go version 命令,显示出当前go的版本就是安装成功了。

③.安装好go环境之后,就可以在命令行使用 go run 命令运行go脚本了。

GO重点语法

1、切片(Slice)

Go 语言切片是对数组的一种抽象

Go 数组的长度是不可以改变的,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片(“动态数组”),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。

可以声明一个未指定大小的数组来定义切片:var identifier type,或使用make()函数来创建切片:var slice1 type = make(type, len);也可以指定容量,其中capacity为可选参数。make(T, length,capacity)。

直接初始化切片,s := int {1,2,3 },表示是切片类型,{1,2,3}初始化值依次是1,2,3.其cap=len=3。

初始化切片s,是数组arr的引用,s := arr[startIndex:endIndex],将arr中从下标startIndex到endIndex-1 下的元素创建为一个新的切片。s := arr[startIndex:] ,默认endIndex时将表示一直到arr的最后一个元素。s:= arr[:endIndex] ,默认startIndex时将表示从arr的第一个元素开始。

切片是可索引的,并且可以由len() 方法获取长度。由 cap() 方法可以测量切片最长可以达到多少。

2、指针

Go 语言的取地址符是&,放到一个变量前使用就会返回相应变量的内存地址。一个指针变量指向了一个值的内存地址。

varvar_name*var-type

var-type 为指针类型,var_name为指针变量名,* 号用于指定变量是作为一个指针。以下是有效的指针声明:

varip*int        /* 指向整型*/
varfp*float32    /* 指向浮点型 */

首先,定义一个指针变量;然后,为指针变量赋值;赋值之后就可以访问指针变量中指向地址的值。

func main() {
var a int= 20     /* 声明实际变量 */
varip *int        /* 声明指针变量 */
ip = &a           /* 指针变量的存储地址 */
fmt.Printf("a 变量的地址是: %x\n", &a  )/* 指针变量的存储地址 */
fmt.Printf("ip变量储存的指针地址: %x\n", ip )
/* 使用指针访问值 */
fmt.Printf("*ip变量的值: %d\n", *ip )
}

当一个指针被定义后没有分配到任何变量时,它的值为 nil。nil 指针也称为空指针。

nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值。

func main() {
varptr *int
fmt.Printf("ptr的值为 : %x\n", ptr  )
}

3、管道

管道(Channel)是Go语言中比较重要的部分,经常在Go中的并发中使用。

①.管道的定义

varchanNamechanElemType,这里ElemType是指此管道所传递的类型。也可以使用make()方法来定义管道,ch := make(chanint, 100),size可以省略

②.管道的一些操作

<-操作符可以由管道中读写数据,需要注意,<-操作符是与最左边的chan优先结合的。

向管道中写入一个数据,在此需要注意:向管道中写入数据通常会导致程序阻塞,直到有其他goroutine从这个管道中读取数据。

读取数据时,需要注意:如果管道中没有数据,那么从管道中读取数据会导致程序阻塞,直到有数据。

关闭channel,直接调用close()即可, close(ch)。

判断ch是否关闭可以使用,x, ok := <-ch,判断ok的值,如果是false,则说明已经关闭(关闭的话读取是不会阻塞的)。

var ch1 chan&lt;- float64     // 只能向里面写入float64的数据,不能读取
var ch2 &lt;-chanint          // 只能读取int型数据

常用GO web框架

1

Beego

beego 是一个开源的Go应用HTTP 框架,他可以用来快速开发API、Web以及后端服务等各种应用。是一个完整的MVC框架,有自己的日志库、ORM和Web框架。你不需要再去安装第三方库。它有一个称为Bee Tool的内置工具,用于监视代码更改,并在检测到更改时运行任务。

2

Iris

Iris号称是最快的Go后端web框架。支持http2,完备的MVC 支持。性能非常卓越,在众多web框架中遥遥领先。另外iris提供的api都是极简风格,很容易上手。支持中间件扩展,拥有丰富的中间件生态库。拥有强大的路由功能,可以轻易的构建各种形式的RESTful API,路由分组、静态路由、动态路径参数化、通配符路由等待。还有http错误定义、上下文处理器、身份验证、视图模板、热重启、Websocket支持等等功能。

3

Buffalo

Buffalo是一个快速又简单的web框架。当你开始一个新项目时,Buffalo可以为你提供一切——从前端到后端开发。Buffalo不仅仅是一个框架——它也是一个整体的Web开发生态系统,可以让你直接构建应用程序。

另外还有很多Go的开源框架,例如:Goji、Martini、Gin Gonic、Gocraft等,大家可以根据自己的实际应用和不同框架的特性来进行选择。

本次分享主要对Golang的简介,后续和大家分享如何用Golang开发简单网站。

软件测试 | 测试开发 | Golang开发入门(一)相关推荐

  1. 如何学习软件测试开发?从入门到精通?

    如何学习软件测试开发?从入门到精通?刚开始学习软件测试的同学要经历一段从学习到入行再到熟练的过程.掌握软件测试基础知识.学习软件测试的思维.将理论知识运用到实践中,做到真正的理解软件测试的理论知识.作 ...

  2. 软件测试设计与开发,软件测试技术·测试设计与开发.ppt

    软件测试技术·测试设计与开发 * 3.4 评审测试用例 复查测试用例时应该考虑的一些问题: 测试或测试组件完全针对的是需求中列出的功能吗? 测试组件是否覆盖了所有需求? 有冗余的测试吗? 每一个测试步 ...

  3. 【软件测试】稳定性和可靠性测试在软件开发中的重要性

    软件测试的某些方面经常会在那些刚接触流程的人中造成混淆--例如在稳定性和可靠性测试之间划清界限.两者通常可以互换使用,并且有一个共同的目标,即确保系统可以在选定的时间范围内稳定运行. 在这篇文章中,我 ...

  4. 软件测试测试开发技能

    从事软件测试许多年,想必很多人都有感到迷茫不知所措的时候,人生的十字路口有很多,该如何抉择呢?有人成功转型,QA.项目管理.配置管理.当然还有技术型,性能测试.自动化测试.测试开发,而想要延续走技术型 ...

  5. 软件测试、测试用例、开发模型和测试模型、瀑布模型和螺旋模型

    什么是测试用例? 王婆的九步连环计 通过重重方式测试潘金莲是否能上钩. 有具体步骤, 有预期结果, 有真实结果 步骤一:让潘金莲答应给王婆做寿衣.这是整个局的开始,不过这个步骤看似简单,用意却不小,让 ...

  6. 软件测试 | 测试开发 | 做为测试,那些必须掌握的测试技术体系

    本文节选自霍格沃兹测试学院内部教材 软件测试技术是软件开发过程中的一个重要组成部分,是贯穿整个软件开发生命周期.对软件产品(包括阶段性产品)进行验证和确认的活动过程.其目的是尽快尽早地发现在软件产品中 ...

  7. 爱上开源之golang入门至实战-使用IDE开发Golang

    使用IDE开发Golang 上一节,使用文本编辑器,我们开启了golang之旅,除了通过文本编辑器的方式来进行程序开发,我们还可以通过使用golang的集成开发环境工具(IDE)来进行更高效率,更快速 ...

  8. Golang开发入门(一)

    点击蓝字关注我们 本文转载自开测 GO语言简介 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型. ...

  9. 安卓心理测试实训代码_我是如何从测试转到开发的

    分割线----------2019-1-2 更新,转岗成功了!半个月前,公司新项目启动了,我主动给领导提出要试着开发某模块功能,领导听了我的自荐和我最近的表现的学习态度(自我臆想)同意让我试一下,嘿嘿 ...

最新文章

  1. 算法学习之路|数位dp简要分析
  2. php绘制历史曲线,thinkphp浏览历史功能实现方法
  3. MySQL的Limit详解(转载)
  4. Establishing SSL connection without server's identityverification is not recommended. According to M
  5. 谨防电子邮件泄露数据
  6. json数据格式了解
  7. [转载]ubuntu 12.10 软件源更新列表
  8. 二维数组的遍历之查漏补缺
  9. 好用的万年历API推荐
  10. word转pdf免费网站
  11. MySQL命令行登录
  12. 软件开发人员电脑配置
  13. Iron WebScraper 网络爬虫
  14. 拒绝纷繁复杂 快速制表软件分享
  15. 可拖拽的弹出窗口Js插件
  16. 下列哪种软件不能编辑html语言,强国挑战答题答案:下面哪种语言最适合用来编写网页中嵌入运行的应用程序?()...
  17. 爬虫36计之1.1 爬取高清MM图片壁纸
  18. 易基因 | 学科前沿:靶向甲基化测序揭示维生素C可防止孕期吸烟引发的后代DNA甲基化改变
  19. wps总是显示服务器错误,wps表格打开遇到错误的解决方法步骤
  20. 如何使用微软认证程序

热门文章

  1. RSTP与MSTP协议
  2. MIPS架构的cpu设计仿真(武汉大学)——1
  3. STM32正交编码器测速
  4. 叠加态:戴尔Latitude笔记本电脑的“人生哲学”
  5. 如何访问局域网的网站【路由器设置端口映射】
  6. 微信小程序设计weui框架
  7. Linux家目录和根目录的区别
  8. 水利水电课程指导之建筑制图基础_测试题
  9. js 获取一个月有多少天的方式
  10. Win10打开Catia装配文件卡死的问题解决方法