go语言

golang语言初体验

半世苍凉 提交于 2020-03-10 11:06:25
Go (又称 Golang )是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种 静态 强类型 、 编译型语言 。Go 语言语法与 C 相近,但功能上有:内存安全, GC (垃圾回收), 结构形态 及 CSP-style 并发计算 。 简介 Go (又称 Golang )是 Google 开发的一种 静态 强类型 、编译型、并发型,并具有垃圾回收功能的 编程语言 。 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及 肯·汤普逊 (Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于 Inferno 操作系统所开发的。Go于2009年11月正式宣布推出,成为开放源代码项目,并在 Linux 及 Mac OS X 平台上进行了实现,后来追加了Windows系统下的实现。在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言”。 目前,Go每半年发布一个二级版本(即从a.x升级到a.y)。 [1] 描述 Go的语法接近 C语言 ,但对于变量的声明有所不同。Go支持垃圾回收功能。Go的并行模型是以 东尼·霍尔 的 通信顺序进程 (CSP)为基础,采取类似模型的其他语言包括 Occam

go-接口

房东的猫 提交于 2020-03-09 21:57:43
接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。 接口 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型。 interface 是一组 method 的集合,是 duck-type programming (鸭子类型编程)的一种体现。接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。不关心属性(数据),只关心行为(方法)。 为什么要使用接口 type Cat struct{} func (c Cat) Say() string { return "喵喵喵" } type Dog struct{} func (d Dog) Say() string { return "汪汪汪" } func main() { c := Cat{} fmt.Println("猫:", c.Say()) d := Dog{} fmt.Println("狗:", d.Say()) } 上面的代码中定义了猫和狗,然后它们都会叫,你会发现main函数中明显有重复的代码,如果我们后续再加上猪、青蛙等动物的话,我们的代码还会一直重复下去。那我们能不能把它们当成“能叫的动物”来处理呢? 像类似的例子在我们编程过程中会经常遇到: 比如一个网上商城可能使用支付宝、微信、银联等方式去在线支付

go语言学习--protobuf的学习

℡╲_俬逩灬. 提交于 2020-03-09 08:28:12
最近在学习中遇到了protobuf,哇喔竟然不知道,马上进行了学习,protobuf也是数据解析的方式,平时使用最多的是json和xml,那么好了,对比下他们的区别,并且附上protobuf的使用。 数据交互xml、json、protobuf格式比较 1、json: 一般的web项目中,最流行的主要还是json。因为浏览器对于json数据支持非常好,有很多内建的函数支持。 2、xml: 在webservice中应用最为广泛,但是相比于json,它的数据更加冗余,因为需要成对的闭合标签。json使用了键值对的方式,不仅压缩了一定的数据空间,同时也具有可读性。 3、protobuf:是后起之秀,是谷歌开源的一种数据格式,适合高性能,对响应速度有要求的数据传输场景。因为profobuf是二进制数据格式,需要编码和解码。数据本身不具有可读性。因此只能反序列化之后得到真正可读的数据。 相对于其它protobuf更具有优势 1:序列化后体积相比Json和XML很小,适合网络传输 2:支持跨平台多语言 3:消息格式升级和兼容性还不错 4:序列化反序列化速度很快,快于Json的处理速速 结论: 在一个需要大量的数据传输的场景中,如果数据量很大,那么选择protobuf可以明显的减少数据量,减少网络IO,从而减少网络传输所消耗的时间。 使用 WIN7 + Go1.9.2+protobuf3.5.1

使用GDB调试Go语言

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-09 07:23:15
用Go语言已经有一段时间了,总结一下如何用GDB来调试它! ps:网上有很多文章都有描述,但是都不是很全面,这里将那些方法汇总一下 GDB简介 GDB是GNU开源组织发布的⼀一个强⼤大的UNIX下的程序调试⼯工具。或许,各位⽐比较喜欢那种图形界⾯面⽅方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会 发现GDB这个调试⼯工具有⽐比VC、BCB的图形化调试器更强⼤大的功能。所谓“⼨寸有所⻓长,尺有所短”就是这个道理。 目前支持的语言 (GNU gdb (GDB) 7.8) 进入 gdb之后输入 set language 可以查看支持的语言列表 $ gdb (gdb) set language Requires an argument. Valid arguments are auto, local, unknown, ada, c, c++, asm, minimal, d, fortran, objective-c, go, java, modula-2, opencl, pascal. (gdb) 准备工作 首先看下已经编写好的一个简单的go语言程序 ➜ go-debug-example tree . ├── lib │ └── calc.go └── main.go 1 directory, 2 files main.go package main

Go语言类型switch

给你一囗甜甜゛ 提交于 2020-03-06 18:56:12
switch还可以用于判断变量类型。使用方式为T.(type),即在变量后加上.(type)。见代码: package main import ( "fmt" ) func main() { var a interface{} a = "abc" switch t := a.(type) { case string: fmt.Printf("string %s\n", t) case int: fmt.Printf("int %d\n", t) default: fmt.Printf("unexpected type %T", t) } } 输出结果为: string abc 如果将上面的: var a interface{} a = "abc" 这两句,合成一句: a := "abc" 编译就会出错: cannot type switch on non-interface value a (type string) 不能在一个非接口类型的变量上使用type switch。 也就是说 type switch只能用于接口的变量。 来源: https://www.cnblogs.com/baiyuxiong/p/4320963.html

go语言连接瀚高数据库(APP)

时间秒杀一切 提交于 2020-03-06 09:59:28
目录 环境 文档用途 详细信息 环境 系统平台:Microsoft Windows (64-bit) 10 版本:5.6.4 文档用途 go语言连接瀚高数据库 详细信息 1、Go 语言环境安装 安装包下载地址为: https://golang.org/dl/ 。 2、Windows 系统下安装 Windows 下可以使用 .msi 后缀(在下载列表中可以找到该文件,如go1.4.2.windows-amd64.msi)的安装包来安装。 默认情况下 .msi 文件会安装在 c:\Go 目录下。你可以将 c:\Go\bin 目录添加到 Path 环境变量中。添加后你需要重启命令窗口才能生效。 3、安装测试 创建工作目录 C:>Go_WorkSpace 。 test.go 文件代码: package main import "fmt" func main() { fmt.Println("Hello, World!") } 使用 go 命令执行以上代码输出结果如下: C:\Go_WorkSpace>go run test.go Hello, World! 4、安装 git http://msysgit.github.com/ 启动 git-cmd.exe 后执行: go get -u github.com/lib/pq 更多详细信息请登录【瀚高技术支持平台】查看 https:/

Go语言

风格不统一 提交于 2020-03-06 06:47:50
https://blog.csdn.net/GUDUzhongliang/article/details/89469746 1、学习曲线容易 Go语言语法简单,包含了类C语法。因为Go语言容易学习,所以一个普通的大学生花几个星期就能写出来可以上手的、高性能的应用。 在国内大家都追求快,这也是为什么国内Go流行的原因之一。 Go 语言的语法特性简直是太简单了,简单到你几乎玩不出什么花招,直来直去的,学习曲线很低,上手非常快。 2、效率:快速的编译时间,开发效率和运行效率高 开发过程中相较于 Java 和 C++呆滞的编译速度,Go 的快速编译时间是一个主要的效率优势。Go拥有接近C的运行效率和接近PHP的开发效率。 C 语言的理念是信任程序员,保持语言的小巧,不屏蔽底层且底层友好,关注语言的执行效率和性能。而 Python 的姿态是用尽量少的代码完成尽量多的事。 于是我能够感觉到,Go 语言想要把 C 和 Python 统一起来,这是多棒的一件事啊。 3、出身名门、血统纯正 之所以说Go出身名门,从Go语言的创造者就可见端倪,Go语言绝对血统纯正。 其次Go语言出自Google公司,Google在业界的知名度和实力自然不用多说。 Google公司聚集了一批牛人,在各种编程语言称雄争霸的局面下推出新的编程语言,自然有它的战略考虑。而且从Go语言的发展态势来看

go学习笔记

孤者浪人 提交于 2020-03-05 16:27:12
变量 命名规范 变量需要以小驼峰方式来命名,列如: var studentName string 声明方式 直接声明类型 var childName string childName = "mark" 直接赋值 var childName = "mark" 简短赋值 childName := "mark" 简短赋值只能用在func内 常量 定义方式 const pi = 3.1415926 const ( n1 = 100 n2 n3 //n2,n3值与上面n1一致 ) iota go语言中常量计数器,只能在常量中使用。初始化时为0,const中每新增一行常量声明将使iota计数一次 const ( a = iota //0 b //1 c //2 _ d //4 ) 字符串 go语言中字符串使用双引号,单引号是字符 name := "mark" desc := "good" personDesc := name + desc personDesc := fmt . Sprintf ( "%s%s" , name , desc ) //字符串分割 info := "ddd/ddd/dddd/dd" ret := strings . Split ( info , "/" ) //包含 strings . Contains //判断前缀和后缀 strings . HasPrefix

Golang 笔记 4 defer、error、panic

百般思念 提交于 2020-03-04 19:05:38
一、defer语句 defer语句仅能被放置在函数或方法中。它由关键字defer和一个调用表达式组成。这里的表达式所表示的既不能是对Go语言内建函数的调用也不能是对Go语言标准库代码包unsafe中的那些函数的调用。实际上,满足上述条件的表达式被称为表达式语句。例: func readFile(path string) ([]byte, error) { file,err != os.Open(path) if err != nil { return nil,err } defer file.Close() return ioutil.ReadAll(file) } 函数readFile的功能是读取指定文件或目录本身的内容并将其返回,同时当有错误发生时立即向调用方报告。其中os和ioutil代表的都是Go语言标准库中的代码包。在打开文件且未发现有错误发生之后,紧跟了一条defer语句。其中携带的表达式语句表示的是对被打开文件的关闭操作。当这条defer语句被执行的时候,其中的这条表达式语句并不会被执行。它的确切的执行时机是在其所属的函数(这里是readFile)的执行即将结束的那个时刻。也就是说,在readFile函数真正结束执行的前一刻,file.Close()才会被执行。该语句可保证在readFile函数将结果返回给调用方之前,那个文件或目录一定会被关闭。

三分钟了解Go语言的前世今生

前提是你 提交于 2020-03-04 07:40:07
一、 为什么需要一个新的语言 最近十年来,C/C++在计算领域没有很好得到发展,并没有新的系统编程语言出现。对开发程度和系统效率在很多情况下不能兼得。要么执行效率高,但低效的开发和编译,如C++;要么执行低效,但拥有有效的编译,如.NET、Java;所以需要一种拥有较高效的执行速度、编译速度和开发速度的编程语言,Go就横空出世了。 传统的语言比如c++,大家花费太多时间来学习如何使用这门语言,而不是如何更好的表达写作者的思想,同时编译花费的时间实在太长,对于编写-编译-运行这个链条来说周期太长。动态语言如Python,由于没有强类型的约束,很多问题需要在运行时发现,这种低级错误更应该交给编译器来发现。 人力成本越来越高 机器越来越便宜 机器的性能越来越厉害 在开发效率和运行速度上达到平衡 go出现之前,无论汇编语言、还是动态脚本语言,在执行效率和开发效率上都不能兼备。 执行效率 execution speed: C/C++ > Java > PHP 开发效率 developing efficiency: PHP > Java > C/C++ 二、 谷歌工程师的20%时间 谷歌的“20%时间”工作方式,允许工程师拿出20%的时间来研究自己喜欢的项目。语音服务Google Now、谷歌新闻Google News、谷歌地图Google Map上的交通信息等,全都是20%时间的产物。