局部变量
在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量.
以下实例中 main() 函数使用了局部变量 a, b, c:
package main
import "fmt"
func main() {
/* 声明局部变量 */
var a, b, c int
/* 初始化参数 */
a = 10
c = a ◆ b
fmt.Printf ("结果: a = %d, b = %d and c = %d\n", a, b, c)
}
以上实例执行输出结果为:
全局变量
在函数体外声明的变量称之为全局变量,全局变量可以在整个包甚至外部包(被导出后)使用.
全局变量可以在任何函数中使用,以下实例演示了如何使用全局变量:
/* 声明全局变量 */
var g int
var a, b int
g = a ◆ b
fmt.Printf("结果: a = %d, b = %d and g = %d\n", a, b, g)
Go 语言程序中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑.实例如下:
var g int = 10
fmt.Printf ("结果: g = %d\n", g)
结果: g = 10
本节主要介绍go语言对Elasticsearch文档的基础操作:创建、查询、更新、删除.
为了方便演示文档的CRUD操作,我们先定义索引的struct结构
根据文档ID,查询文档
通过多个Id批量查询文档,对应ES的multi get
根据id更新文档
支持批量更新文档内容
提示: 复杂查询条件,请参考 go es查询用法
之前写过了Go语言gorm框架MySQL实践,其中对gorm框架在操作MySQL的各种基础实践,下面分享一下如何使用gorm框架对MySQL直接进行性能测试的简单实践.
这里我使用了一个原始的Go语言版本的 FunTester 测试框架,现在只有一个基本的方法,实在是因为Go语言特性太强了.框架设计的主要思路之一就是利用Go语言的闭包和方法参数特性,将一个 func() 当做性能测试的主题,通过不断运行这个 func() 来实现性能测试.当然还有另外一个思路就是运行一个多线程任务类,类似 Java 版本的 com.funtester.base.constaint.ThreadBase 抽象类,这样可以设置一些类的属性,绑定一些测试资源,适配更多的测试场景.
下面演示select的性能测试,这里我用了随机ID查询的场景.
这里使用了select的用例部分,随机ID,然后更新name字段,随机10个长度的字符串.
这里用到了 FunTester 字段都是随机生成.
到这里可以看出,性能测试框架用到的都是gorm框架的基础API使用,这里MySQL连接池的管理工作完全交给了gorm框架完成,看资料说非常牛逼,我们只需要设置几个参数.这个使用体现很像 HttpClient 设置 HTTP 连接池类似,这里我们也可以看出这些优秀的框架使用起来都是非常简单的.
PS:关于gorm的基础使用的请参考上一期的文章Go语言gorm框架MySQL实践.
包名本质上是所在目录的名称,我们在基础知识演示用例中进行扩展,进一步理解包名,执行前需要执行的命令请参考上一节,首先来看一下目录结构:
此时,如果我们想使用subpackage/sub/subfunc.go时,需要import的是subpackage/sub,而不是subpackage/sub/subfunc,来看具体的实现:
我们回到使用的主函数中,我们在主函数中引入"subpackage/sub",而调用中直接使用了文件名称myfunc
执行的结果如下
Go 语言中 break 语句用于以下三方面:
break 语法格式如下:
break 语句流程图如下:
以上实例执行结果为:
以下实例有多重循环,演示了使用标记和不使用标记的区别:
以上实例的执行结果为:
break re 这句说明了一次性跳出到re标记,而不是只跳出当前局部循环.
Go语言在云计算、大数据、微服务、高并发领域应用应用非常广泛.BAT大厂正在把Go作为新项目开发的首选语言.
Go语言能干什么?
①.、服务端开发:以前你使用C或者C◆◆做的那些事情,用Go来做很合适,例如日志处理、文件系统、监控系统等;