Go语言中文网 为您找到相关结果 3793

在Golang中获取DNS记录

使用Golang获取域名的DNS记录, 包括A / CNAME等类型. 方案1: 官方net包 只举例获取CNAME类型的解析记录, 其他类型大同小异. func CNAME(src string) (dst string, err error) { dst, err = net.LookupCNAME(src) return } 官方net包调用的是系统API, 所以在不同的系统上可能有不同的结果, 我测试当一个域名的解析记录如下时, linux和windows返回的结果不一致. bysir.xyz. 297 IN CNAME blog.bysir.top. blog.bysir.top. 60 IN CNAME bysir.top. bysir.top. 60 IN A 78.178.2...阅读全文

博文 2019-05-27 19:34:39 bysir

go语言选择语句 switch case

根据传入条件的不同,选择语句会执行不同的语句。下面的例子根据传入的整型变量i的不同而打印不同的内容: switch i { case 0: fmt.Printf("0") case 1: fmt.Printf("1") case 2: fallthrough case 3: fmt.Printf("3") case 4, 5, 6: fmt.Printf("4, 5, 6") default: fmt.Printf("Default") } 运行上面的案例,将会得到如下结果:  i = 0时,输出0;  i = 1时,输出1;  i = 2时,输出3;  i = 3时,输出3;  i = 4时,输出4, 5, 6;  i = 5时,输出4, 5, 6;  i = 6时,输出4,...阅读全文

博文 2015-07-29 03:00:01 osfipin

详解 Go 语言中的 time.Duration 类型

长久以来,我一直抓狂于 Go 标准库中的 Time 包,我的抓狂来自于两个功能,一是捕获两个不同时间段之间间隔的毫秒数,二是将一个用毫秒表示的连续时间段与预先定义的时间段进行比较。这听起来很简单,没错,确实如此,但它的确让我抓狂了。 在 Time 包中,定义有一个名为 Duration 的类型和一些辅助的常量: ```go type Duration int64 const ( Nanosecond Duration = 1 Microsecond = 1000 * Nanosecond Millisecond = 1000 * Microsecond Second = 1000 * Millisecond Minute = 60 * Second Hour = 60 * Minute ) ...阅读全文

博文 2018-03-17 23:10:54 swardsman

[笔记]Go语言的字符串拼装方式性能对比

Go语言中字符串的拼装方法很多,那么问题来了,到底哪家性能好? 下面代码,分别比较了 fmt.Sprintf,string +,strings.Join,bytes.Buffer,方法是循环若干次比较总时间。 在VMWare下的Ubuntu 14.04下运行的结果表明: fmt.Sprintf 和 strings.Join 速度相当 string + 比上述二者快一倍 bytes.Buffer又比上者快约400-500倍 如果循环内每次都临时声明一个bytes.Buffer来使用,会比持续存在慢50%,但是仍然很快 测试代码如下: package main import ( "bytes" "fmt" "strings" "time" ) func benchmarkStringFuncti...阅读全文

博文 2015-03-08 03:00:01 journeyonmyway

命令: go build

go help build 构建编译由导入路径命名的包,以及它们的依赖关系,但它不会安装结果. 使用 go build [-o 输出名] [-i] [编译标记] [包名] 如果参数为***.go文件或文件列表,则编译为一个个单独的包。当编译单个main包(文件),则生成可执行文件。当编译单个或多个包非主包时,只构建编译包,但丢弃生成的对象(.a),仅用作检查包可以构建。当编译包时,会自动忽略'_test.go'的测试文件。 参数 -o output 指定编译输出的名称,代替默认的包名。 -i install 安装作为目标的依赖关系的包(用于增量编译提速)。 以下 build 参数可用在 build, clean, get, install, list, run, test -a 完全编译,不...阅读全文

博文 2017-02-21 10:00:42 0zaki1sc

全套Go语言学习教程,适合编程零基础或者有其他编程语言基础的同学。

# 课程介绍 本学习课件是尚硅谷的韩顺平老师亲自的录制的,课件内容包括:视频课件 、课堂笔记、辅助文档、代码等。 韩老师讲课非常有特色,生动有趣,通俗易懂,我就是一路跟着这套视频学过来的。 # 获取方式 评论里留下你的邮箱,我争取在评论后的一个礼拜内把视频发到邮箱里,女士优先(如果有的话,哈哈)。 ![文件截图.png](https://static.studygolang.com/181214/bae187056b873bf8f0e1d3caaa3193ad.png) ![视频截图.png](https://static.studygolang.com/181214/27232d537149f06841a7933c36817a8f.png...阅读全文

博文 2018-12-14 10:29:06 Subhuti_hu

Go语言圣经中文版

在C语言发明之后约5年的时间之后(1978年),Brian W. Kernighan和Dennis M. Ritchie合作编写出版了C语言方面的经典教材《The C Programming Language》,该书被誉为C语言程序员的圣经,作者也被大家亲切地称为K&R。 同样在Go语言正式发布(2009年)约5年之后(2014年开始写作,2015年出版),由Go语言核心团队成员Alan A. A. Donovan和K&R中的Brian W. Kernighan合作编写了Go语言方面的经典教材《The Go Programming Language》。Go语言被誉为21世纪的C语言,如果说K&R所著的是圣经的旧约,那么D&K所著的必将成为圣经的新约。 镜像: http://books.stu...阅读全文

博文 2016-03-29 07:00:05 smallmaple

Go 语言测试(Test)、性能测试(Benchmark) 学习笔记

简介 Test Package testing provides support for automated testing of Go packages. It is intended to be used in concert with the “go test” command, which automates execution of any function of the form. testing包提供了对Go包的自动测试支持。 这是和go test 命令相呼应的功能, go test 命令会自动执行所以符合格式 func TestXXX(t *testing.T) 的函数。 Benchmark Functions of the form func BenchmarkXxx(b ...阅读全文

博文 2015-12-14 18:00:00 cchd0001

零猫科技告诉你-Go语言可以干嘛?

Hi,大家好!我是GO首席软件工程师Rob Pike说:我之所以被开发,是因为过去10多年间软件开发的难度令人沮丧。你所不知的,GO Go语言是谷歌发布的第二款开源编程语言。专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。Go的目标是希望提升现有编程语言对程序库等依赖性(dependency)的管理,这些软件元素会被应用程序反复调用。由于存在并行编程模式,因此也被设计用来解决多处理器的任务。我是GO,我够红 目前,已经有很多公司开始使用Go语言开发自己的服务,甚至完全转向Go开发,也诞生了很多基于Go的服务和应用,比如Dokcer、k8s等,现在我们看下,有哪些大公司在用Go语言了。Google对Go寄予厚望。旗下Ap...阅读全文

golang学习笔记:go 语法篇(一)

学习一门新的语言肯定是要从他的基本语法开始,语法构成了整个程序设计的基础,从语法中我们也可以看到这门语言的一些特性,但是话说回来,语法这东西,不同的语言大同小异,所以这也对语法的记忆造成了一定的难度,其实最好的方法应该是旁边有本书,随时可以拿过来查阅或者纠正。当然golang的语法也是这样,下面的一些是我学习七牛云存储团队许式伟等出的《Go语言编程》: http://baike.baidu.com/link?url=vFrjnVJwITN0LaRbL7TmWYpq5V8JLWzL_NycAQy6w0e7JXP6a4bGm61ge0gGMU6jNFQO_RnuDGEQPh7YK9w4S_ 语法部分的时候整理的一些,这本书对于新手入门还是挺有帮助的。为了日后可以及时回顾,所以记录下来了。为了避免...阅读全文

博文 2015-06-12 09:00:06 u011321908

GO语言基础入门--类型

类型 本Go语言基础入门内容均来自于《Go语言编程》,个人记录,加深理解。 Go语言内置以下这些基础类型:  布尔类型: bool。  整型: int8、 byte、 int16、 int、 uint、 uintptr等。  浮点类型: float32 、 float64。  复数类型: complex64、 complex128。  字符串: string。  字符类型: rune。  错误类型: error。 此外, Go语言也支持以下这些复合类型:  指针( pointer)  数组( array)  切片( slice)  字典( map)  通道( chan)  结构体( struct)  接口( interface) 在这些基础类型之上Go还封装了下面...阅读全文

博文 2015-04-22 13:00:05 chenqijing2

内网穿透工具 frp

frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。 ### frp 的作用 * 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。 * 对于 http 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。 * 利用处于内网或防火墙后的机器,对外网环境提供 tcp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。 * 可查看通过代理的所有 http 请求和响应的详细信息。(待开发) ### 开发状态 frp 目前正在前期开发阶段,master ...阅读全文

开源项目 2016-09-07 15:56:33 fatedier

golang 字符串常用操作(go练习代码)

练习golang string常用操作,备份 类型转换 比较对比 搜索 查找 统计 替换 删除过滤 大小写转换 前缀后缀 字符串分割 拼接 3中拼接字符串方式对比 func main() { fmt.Println("字符串测试") fmt.Println("字符串转化") //获取程序运行的操作系统平台下 int 类型所占的位数,如:strconv.IntSize。 //strconv.IntSize fmt.Println("将字符串转换为 int 型。") var trastr01 string = "100" traint01, err_tra := strconv.Atoi(trastr01) if err_tra != nil { fmt.Println(err_tra) } e...阅读全文

博文 2017-10-17 05:04:48 正为疯狂

基于gin和vue开发的全栈后台管理系统脚手架gin-vue-admin

## 开发文档 [在线文档](http://doc.henrongyi.top/) [http://doc.henrongyi.top/](http://doc.henrongyi.top/) 本模板使用前端ui框架为 element-ui https://element.eleme.cn/#/zh-CN 前端组件可查看elementUi文档使用 ## 基本介绍 >GIN-VUE-ADMIN是一个基于vue和gin开发的全栈前后端分离的后台管理系统,拥有jwt鉴权,动态路由,动态菜单,casbin鉴权,表单生成器,代码生成器等功能,提供了多种示例文件,让大家把更多时间专注在业务开发上。 ## 技术选型 1. 后端采用golang框架gin,快速搭建基础restful风...阅读全文

开源项目 2020-04-02 15:37:55 奇淼

go语言包与包引用

go语言中包(package)与java中的包(package)非常类似,都是组织代码的方式,而且都和磁盘上的目录结构存在对应关系。 go语言中,包名一般为go代码所在的目录名,但是与java不同的是,go语言中包名只有一级,而在java中包名是以点分割的多级目录组合的。 go语言中,引用包时需要以GOPATH/src目录为相对根目录,依次输入下面的各级目录名。 如:环境变量GOPATH = ~/go 包hello下有hello.go,包所在的磁盘路径为: ~/go/src/golang_everyday/hello 也就是说,hello.go的路径为: ~/go/src/golang_everyday/hello/hello.go 则在其它文件中引用该go文件时,代码应为: import ...阅读全文

博文 2015-03-04 03:00:02 baiyuxiong

Go程序如何安全退出(CTRL+C)

http://m.oschina.net/blog/125853 如果是命令行程序需要退出, CTRL+C是最直接的方法. C语言如何处理CTRL+C CTRL+C会向命令行进程发送中断信号, 在C语言的中的signal函数可以注册信号的处理函数. signal函数的签名如下: void (*signal(int sig, void (*func)(int)))(int); 比如, 我们要处理CTRL+C对应的SIGINT信号: #include #include #include void sigHandle(int sig) { switch(sig) { case SIGINT: printf("sig...阅读全文

博文 2014-10-20 16:00:00 leonpengweicn

golang教程

最近兴趣所致,打算写一本书《build-web-application-with-golang》 目前已经完成了前面两章 1.GO环境配置 1.1. GO安装 1.2. GOPATH 与工作空间 1.3. GO shell命令 1.4. GO开发工具 1.5. 小结 2.GO语言基础 2.1. 你好,GO 2.2. GO基础 2.3. 流程和函数 2.4. struct 2.5. 面向对象 2.6. interface 2.7. 并发 2.8. 通讯 2.9. 小结 3.设计开发博客系统 4.如何实现路由 5.web语言处理 6.模版处理 7.session和cookie 8.数据库 9.如何编写REST 10.文件上传 11.webSockets 12.静态文件服务 13.如何国际化 14...阅读全文

博文 2014-10-04 19:26:45 astaxie

百度网盘工具箱BaiduPCS-Go

基于go语言的百度网盘工具箱,百度帐号多用户支持。 网盘内列出文件和目录, **支持通配符匹配路径**, 通配符_百度百科。 下载网盘内文件, 支持网盘内目录 (文件夹) 下载, 支持多个文件或目录下载, 支持断点续传和高并发**高速**下载; 下载测试,服务器: 阿里云,下载 4G 文件, 只需 7分29秒。 ![image](https://static.oschina.net/uploads/space/2018/0206/142909_lScL_3703517.png) **程序 下载/运行 说明** Go语言程序, 可直接下载使用, [点此查看发布页面 / 下载汇总](https://github.com/iikira/BaiduPCS-Go/releases)...阅读全文

开源项目 2018-02-06 15:30:01 网友

go语言的一些资料

1.首先推荐一个基础学习go的,趣味性,针对性不错,对基础很好。http://go-tour-zh.appsp0t.com/#1 2.tideide 一个好go编辑器,能调试,有项目构建,方便配置交叉编译,语法高亮功能。 3.go文档,中文的虽然不全,但是基本的都有https://golang-china.googlecode.com/svn/trunk/Chinese/golang.org/index.html#toc11 (也许要架梯子,你懂的) 4.go语言google group https://groups.google.com/forum/#!forum/golang-china 5.go实现的blog合集:http://www.cnblogs.c...阅读全文

golang 单元测试

单元测试是质量保证十分重要的一环,好的单元测试不仅能及时地发现问题,更能够方便地调试,提高生产效率,所以很多人认为写单元测试是需要额外的时间,会降低生产效率,是对单元测试最大的偏见和误解 go 语言原生支持了单元测试,使用上非常简单,测试代码只需要放到以 `_test.go` 结尾的文件中即可。golang的测试分为单元测试和性能测试,单元测试的测试用例以 `Test` 开头,性能测试以 `Benchmark` 开头 ### 举个例子 实现排列组合函数对应的单元测试和性能测试 #### 实现排列组合函数 ``` // combination.go package hmath func combination(m, n int) int { if n > m-n { n = m - n } c...阅读全文

博文 2018-02-02 03:01:44 hatlonely

Go适合做什么?为何这么多人偏爱Go语言?

Go作为Google2009年推出的语言,其被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。 对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。 到现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 哪些大公司在使用Go语言: 1、Google 这个不用多做介绍,作为开发Go语言的公司,当仁不让。Google基于Go有很多优秀的项目,比如:https://github.com/kubernetes/kubernetes ,大家也可以在Github上 https://github.com/google/ 查看更多Google的Go开源项目。 2、Face...阅读全文

博文 2019-02-10 10:32:40 m0_37125796

Go程序设计语言(一)

Go程序设计语言(一) 八 23 bigwhite技术志 Blog, Blogger, C, Cpp, Go, Golang, Google, Opensource, Programmer, 博客, 开源, 程序员, 编程,语言, 编译器 No Comments 本文译自Rob Pike的Go语言PPT教程 – "The Go Programming Language Part 1(updated June 2011)"。由于该教程的最新更新时间早于Go 1版本发布,因此该PPT中的一些内容与Go 1语言规范略有差异,到时我会在相应的地方做上注解。 谁发明了Go Go语言的设计和实现工作是由Google的一个研发小组以及来自世界各地的大量贡献者共同完成的。 联系方式: http://gola...阅读全文

博文 2014-11-07 14:51:54 bigwhite

golang枚举类型 - iota用法拾遗

在c#、java等高级语言中,经常会用到枚举类型来表示状态等。在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手。 1、枚举类型定义 从百度百科查询解释如下:http://baike.baidu.com/link?url=Lrq57-YIZJ35grERvdg2kh7lfGfxvvLCVsNBMAqjBUOQX3CJUYnJp-9oZ2-rf3JGMqL3e4RbnSRQWs_5nmaI6K 枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中是一种构造数据类型。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。 枚举可以根据Integer、Long、Short或Byte...阅读全文

go类型断言

go里面的类型断言写法: x.(T) 其中x为interface{}类型 T是要断言的类型。 类型断言有个非常好的使用场景:当某个类型为interface{}的变量,真实类型为A时,才做某件事时,这时可以使用类型断言 下面有个例子。只有当某个interface{}的类型 存储的是int时才打印出来。 package main import ( "fmt" "math/rand" "time" ) func main() { var v interface{} r := rand.New(rand.NewSource(time.Now().UnixNano())) for i := 0; i < 10; i++{ v = i if (r.Intn(100) % 2) == 0 { v = "h...阅读全文

博文 2015-05-19 23:00:02 guonaihong

golang编程之时间编程

golang编程之时间编程 编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间的支持,是package time做的事儿,里面有好多的函数,我就不一一举例学习,毕竟这是官方文档干的事情。我们初步的学习下常用的函数。 第一个是UNIX epoch time,确切的说就是自1970-01-01 00:00:00 GMT以来的秒数,不知道如何获取的,可以在shell下执行 date +%s manu@manu-hacks:~/code/go/self$ date +%s 1385131172 熟悉Linux下C编程的就是time函数的返回值: #include 阅读全文

博文 2015-01-31 01:00:03 stephen830

go语言初始化内部结构体3中方式

1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 type User struct { 8 Id int 9 Name string 10 Age int 11 } 12 13 type Manger struct { 14 User 15 title string 16 } 17 18 func main() { 19 m := Manger{User:User{1, "ok", 12}, title:"123"} //可以 20 m2 := Manger{User{1, "ok", 12}, "123"} //可以 21 m3 := Manger{User:User{Id:1, Name:"ok", Age:12}, title:"123"} //可...阅读全文

博文 2015-05-14 03:00:00 or2-

go语言 自定义 error

package main import ( "errors" "fmt" ) type data struct{} func (this *data) Error() string { return "" } func bad() bool { return true } //自定义错误返回函数 func test() error { var p *data = nil if bad() { return p } return nil } //只是返回错误非空 func test1() error { var val error = errors.New("XXX") return val } func main() { var e error = test() if e == nil { ...阅读全文

博文 2014-10-04 19:26:43 elick

Go 语言中文网 联合 实验楼 送福利

[实验楼](https://www.shiyanlou.com) 是国内领先的IT技术实训平台,采用创新的“在线实验”学习模式,为学生及在职程序员提供编程、运维、测试、云计算、大数据、数据库等最新的IT技术实践课程。 实验楼建设初衷是帮助学习者通过动手实践收获知识,同时体会实验精神。德国教育学家斯普朗格说:“教育的最终目的不是传授已有的东西,而是要把人的创造力量诱导出来”,实验楼设计理念也是如此:从实践切入,依靠交互性、操作性更强的课程,理论学习+动手实践共同激发你的创造力。 实验楼 联合 Go 语言中文网 给 gopher 送福利:**价值 30 元的优惠码**,可以抵扣会员或训练营。 优惠码兑换在 [物品兑换](/gift) 页面。 ...阅读全文

go语言init和main函数

Go里面有两个保留的函数:init函数和main函数。下边就来比较一下两个函数的异同。 相同点:两个函数在定义时不能有任何的参数和返回值,且Go程序自动调用。 不同点:init可以应用于任意包中,且可以重复定义多个。main函数只能用于main包中,且只能定义一个。 下边说一下两个函数的执行顺序: 对同一个go文件的init()调用顺序是从上到下的 对同一个package中不同文件是按文件名字符串比较“从小到大”顺序调用各文件中的init()函数,对于 对不同的package,如果不相互依赖的话,按照main包中"先import的后调用"的顺序调用其包中的init() 如果package存在依赖,则先调用最早被依赖的package中的init() 最后调用main函数 下图截自astaxie...阅读全文

博文 2015-06-17 23:02:22 Mervyn1205

我眼中的编程语言Rust和GO

我已经花了不少时间在把玩一些新语言 – 特别要指出,Rust抓住了我的想象力。我们在Chef中使用大量的Ruby、Erlang和JavaScript(后来是Angular)代码。以下是我喜欢这些语言的东西: Ruby的感觉就像永远在敲打我头脑中“whipuptitude”部分。它很容易,可以简单的坐下来开始编码,你基本不会碰到困难。它也有类似Perl中我很喜欢的表达力。你越熟练这个语言,你就会越觉得你好像可以用英语(母语)表达自己的想法。Erlang和OTP极好操作。那些模式匹配、Actor并发、单一赋值,还有令人愉快的运行时导致运行、管理、调试产品服务是一种乐趣,我认为它语法是丑陋的,但是当你掌握它后,你会发现它的某种简洁美。现代JavaScript以它自己的方式变得越来越讨人喜欢。比如你...阅读全文

博文 2015-09-02 00:00:01 haiguo_gu

Go语言/golang/位操作/取反/异或/左移/右移

Go语言位操作实例 package main import ( "fmt" ) // 获取0-n之间的所有偶数 func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&与C语言中使用方式一样 array = append(array, i) } } return array } // 互换两个变量的值 // 不需要使用第三个变量做中间变量 func swap(a, b int) (int, int) { a ^= b // 异或等于运算 b ^= a a ^= b return a, b } // 左移、右移运算 func shifting(a int) int { a = a << 1 ...阅读全文

博文 2014-10-04 19:27:13 viney

Golang调用动态库so

测试动态库 test_so.h ``` int test_so_func(int a,int b); ``` test_so.c #include "test_so.h" ``` int test_so_func(int a,int b) { return a*b; } ``` 生成so ``` gcc -shared ./test_so.c -o test_so.so ``` 复制so文件到golang项目目录 golang项目目录,建立 load_so.h ``` int do_test_so_func(int a,int b); ``` load_so.c ``` #include "load_so.h" #include int do_test_so_func(i...阅读全文

博文 2017-09-15 03:56:05 1019459067

Golang数据库操作

Golang支持DB操作位于database包下,支持基本CRUD操作、事务和Prepared Statement,本文以MySQL为例。 MySQL驱动安装 使用数据库之前,必须安装相关MySQL数据驱动[1],如果未安装驱动或者没有引入驱动库会报以下错误: failed to open database: sql: unknown driver "mysql" (forgotten import?) 安装golang mysql driver go get github.com/go-sql-driver/mysql 代码中还需注册数据库驱动,通过引入空白倒入[2]mysql包来完成 import("database/sql"// 引入数据库驱动注册及初始化_ "github.com/g...阅读全文

博文 2015-06-17 20:01:42 CoProphet

golang的select典型用法

golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。 示例: ch1 := make (chan int, 1) ch2 := make (chan int, 1) ... select { case <-ch1: fmt.Println("ch1 pop one element") case <-ch2: fmt.Println("ch2 pop one element") } 注意到 select 的代码形式和 switch 非常相似, 不过 select 的 case 里的操作语句只能是【IO 操作】 。 此示例里面 select 会一直等待等到某个 case 语句完成, 也就是等到成功从...阅读全文

博文 2015-02-15 18:23:33 YanyiWu

一人千面:谈谈Go语言中的type

世界是复杂的。一个人、一个事物可以有多样的特性,而多个人多个事物又可以表现出一致的特性;从微观角度说,即具体到个体时,要求这个个体是多功能的多样性的,能够完成越多的功能具有越多的特性越好。比如一个人可以同时具有贤妻、慈母、严师和路人甲的身份,比如一个数字可以表示年龄、高度、分数等。从宏观角度说,从管理复杂性的角度出发,又要求许多的个体具有一致性以便进行统一处理以降低管理成本,比如各种机动车都可以“驾驶”,各种食物都可以“食用”,各种书写工具都可以“写”。换而言之:微观上一人千面;宏观上千人一面。 编程本质上是为了解决人类的问题满足人类的需要,所以需要把现实世界映射到编程语言里,即在编程语言中建立对应的模型。在Go语言里,提供了很好的机制来建立这种模型,也就是type和interface。ty...阅读全文

go语言:sync.Once的用法

sync.Once.Do(f func())是一个挺有趣的东西,能保证once只执行一次,无论你是否更换once.Do(xx)这里的方法,这个sync.Once块只会执行一次。 package main import ( "fmt" "sync" "time" ) var once sync.Once func main() { for i, v := range make([]string, 10) { once.Do(onces) fmt.Println("count:", v, "---", i) } for i := 0; i < 10; i++ { go func() { once.Do(onced) fmt.Println("213") }() } time.Sleep(4000...阅读全文

博文 2016-01-05 19:00:00 x369201170

goconvey - 课时 1:优雅的单元测试

注意事项 本博客隶属于 goconvey - 课时 1:优雅的单元测试 请注意配套使用。 本博文为 goconvey - Go 语言单元测试包的配套博客,旨在通过文字结合代码示例对该库的使用方法和案例进行讲解,便于各位同学更好地使用和深入了解。 库简介 Go 语言虽然自带单元测试功能,在 GoConvey 诞生之前也出现了许多第三方辅助库。但没有一个辅助库能够像 GoConvey 这样优雅地书写代码的单元测试,简洁的语法和舒适的界面能够让一个不爱书写单元测试的开发人员从此爱上单元测试。 下载安装 您可以通过以下两种方式下载安装 GoConvey: gopm get github.com/smartystreets/goconvey 或 go get github.com/smartystre...阅读全文

博文 2014-10-20 09:29:06 无闻

Pokemon Go 教程

 澳大利亚apple id 账号:fdf087469@163.com 密码:He807671626 据说不要登icould,一登就会锁了 将iPhone内部的Appstore ID更改一下。登入AppStore,可以看见AppStore已经自动切换到澳大利亚区,直接搜索Pokemon Go,点击下载。此过程稍微慢点,请各位耐心等待。 pokemon go中国玩家必须懂的教程 下载完先别着急,将刚刚iCloud ID更换成你原来的,再次登入AppStore,已经自动切换到国区(最垃圾的就是国区!!),搜索下载一个VPN,这里我推荐Green VPN或者Tiger VPN,可以免费用10天(感觉爽就付费包月咯)。 pokemon go中国玩家必须懂的教程 下载完VPN,打开VPN软件,会提示设...阅读全文

博文 2016-07-18 12:00:01 q8649912

Go编程语言-Eclipse集成goeclipse开发插件,安装详情及编写Hello Word-陈科肇

goeclipse 插件指南 http://goclipse.github.io/ 概述 GoClipse对于一个Eclipse IDE的Go编程语言。 特征 安装 用户指南 Github上 (最新发布) (报告问题) GoClipse用户组 -讨论和帮助,GoClipse 安装要求 Java VM version 8 or later. Eclipse 4.6 (Neon) or later. CDT 9.0 or later (this will be installed or updated automatically as part of the steps below). 开始安装 离线安装 因为GFC的封闭,我们需要先到https://github.com/GoClipse/go...阅读全文

博文 2016-09-09 15:00:00 u013474104

在 Linux 中使用 Go 作为脚本语言

在 `Cloudflare` 的人们都非常喜欢 Go 语言。我们在许多[内部软件项目](https://blog.cloudflare.com/what-weve-been-doing-with-go/)以及更大的[管道系统](https://blog.cloudflare.com/meet-gatebot-a-bot-that-allows-us-to-sleep/)中使用它。但是,我们能否进入下一个层次并将其用作我们最喜欢的操作系统 Linux 的脚本语言呢? ![image here](https://raw.githubusercontent.com/studygolang/gctt-images/master/go-script/gopher-tux-1.png) ## 为什么考虑...阅读全文

博文 2018-02-27 15:59:22 shniu

GoMock框架使用指南

序言 要写出好的测试代码,必须精通相关的测试框架。对于Golang的程序员来说,至少需要掌握下面三个测试框架: GoConvey GoStub GoMock 读者通过前面三篇文章的学习可以对框架GoConvey和GoStub优雅的组合使用了,本文将接着介绍第三个框架GoMock的使用方法,目的是使得读者掌握框架GoConvey + GoStub + GoMock组合使用的正确姿势,从而提高测试代码的质量。 GoMock是由Golang官方开发维护的测试框架,实现了较为完整的基于interface的Mock功能,能够与Golang内置的testing包良好集成,也能用于其它的测试环境中。GoMock测试框架包含了GoMock包和mockgen工具两部分,其中GoMock包完成对桩对象生命周期的...阅读全文

博文 2017-06-24 16:06:56 _张晓龙_

golang对象序列化和反序列化

模拟测试1,000, 000条数据 每条10个字节 也就是10M不到的 数据(高度结构化的数据) 过程 1.对象序列化为 byte 2.byte反序为对象 3.gzip压缩byte 测试语言go测试方案: raw byte,json ,bson, msgpack (protostuff需要先做对象配置文件,比较麻烦,通常认为和msgpack性能相当 )结果:msgpack 胜出 大小 gzip压缩后大小 对象到byte耗时 byte到对象耗时 raw 10000000 6573252(65%) 未测试 未测试 json 47515988 7919511 (17%) 3248ms 5280ms bson 49888910 9506965 (19%) 3863ms 6235ms msgpack ...阅读全文

博文 2014-10-04 19:27:16 咖啡伴侣

基于golang的桌面GUI开发

这里有一份基于golang的桌面GUI开发的客户端,依赖谷歌浏览器。背景我们的客户主要政府客户,对安全性易用性要求比较高。还需要实现一机一用户,数据传输加密,防劫持防嗅探等。这个时候需要开发专用的浏览器。传统方式使用 chromium C++开发,编译慢,开发慢,坑也比较多。解决方案使用go + GUI组件的方式调用本机Chrome浏览器,使用wensocket的方式实现程序和web之间Js函数调用的功能。比如在go程序中内置加密函数,在web中直接调用函数 desen("我是明文"); 类似APP+H5混合开发。并能获取本机机器码和用户信息绑定,实现一机一用户。更多功能可下载下面文件测试。文件,仅限测试抛砖引玉https://pan.baidu.com/s/1nEQsrXMAmW9_nYm...阅读全文

博文 2019-05-30 21:34:49 M3n

[Go语言]cgo用法演示

经历了数十年发展的C语言,各种各样的现成的库已经非常丰富。通过cgo,可以在Go语言中使用C语言代码,充分利用好现有的“轮子”。 本文所有代码,在下述环境中调试通过: Windows 8.1 64-bitGo 1.3.3 64-bitGCC 4.8.1 64-bit 要想使用cgo,要导入C“包”: import "C"这行代码的上方要紧挨着连续的若干行的注释,在这些注释中编写C代码。例如: /* int PlusOne(int n) { return n + 1; } */ import "C" 我们知道,如果要引用一个包中的符号,需要用“包名.符号名”的方式,C“包”也是这样,例如:C.int、C.GetWindowLongPtr。 下面介绍使用C语言变量、函数、结构体、联合体、回调函数...阅读全文

博文 2014-10-15 11:00:00 jthmath

Go test 少为人知的特性

大多数的 Go 程序员都知道和喜欢用 `go test`,这个测试工具来自于 Go 官方的 `gc` 工具链。(想要执行测试代码)这个命令可能是最简单的了,而且还能做得很漂亮。 大家都知道,运行 `go test` 命令将执行当前目录下的包的测试代码,它会寻找 `*_test.go` 文件,并在这些文件中,寻找符合 `TestXxx(*testing.T){}` 命名的函数和参数(即,接收 `*testing.T` 参数的函数,命名为 `TestXxx`,`Xxx` 可以是任何不以小写字符开头的名字)。这个测试代码不会影响正常的编译过程,只在执行 `go test` 时被使用。 但这里还有很多隐藏的东西。 ## 黑盒测试包(The black box test package) 通常情况下,...阅读全文

博文 2018-03-14 17:31:50 gogeof