A tour of Go

A Tour of Go(GO之旅) Posted on Thursday, June 21, 2012.(投递于2012年6月21号星期四) Last week, I gave a talk about Go at the Boston Google Developers Group meeting. There were some problems with the recording, so I have rerecorded the talk as a screencast and po...阅读全文

开源中国博客 2017-01-18 18:00:07 四明狂客

试玩 go-socks5

测试环境 centos7 64 安装配置 安装 golang git yum install golang git 设置golang环境变量 export GOPATH=/root/gopath/ export GOROOT=/usr/lib/golang/ GOROOT 是golang安装的目录 如果是yum安装 用rpm查找出安装目录: rpm -ql golang GOPATH gopath可以自己新建个目录,安装的go-socks5会放在 $GOPATH目录中 安装go-socks5 g...阅读全文

开源中国博客 2017-01-17 15:00:03 dworry

golang的事务操作sync.once

复习复习golang的库函数 type Once struct { m Mutex done uint32 //相当于一个flag值 } func (o *Once) Do(f func()) { //atomic库是原子操作,由汇编代码实现 if atomic.LoadUint32(&o.done) == 1 { return } // Slow-path. //读取o.done值前设置一个锁mutex o.m.Lock() defer o.m.Unlock() if o.done == 0 ...阅读全文

开源中国博客 2017-01-16 16:00:09 golang_yh

[Go语言]binary tree算法的华山论剑

前言 在benchmarkgame(世界上最火的性能对比网站)上,Go语言一直有一个槽点,就是极其慢的binary tree性能,执行用时40秒 (我的机器上,16秒),与此对比,Java版本是6秒,那么问题来了:为什么慢得令人发指?我们来深入研究下慢的原因,然后看看能否对其进行改进。 对于binary tree算法中,最耗性能的地方就是海量的node分配和bottomUpTree()递归函数的调用,与这两项对应的go的特性就是gc的goroutine的堆栈分配。 GC 这个世界没有完美的GC,...阅读全文

CSDN博客 2016-12-31 16:32 abv123456789

golang 的url模块示例

package main import "fmt" import "net/url" import "strings" func main() { //我们将解析这个 URL 示例,它包含了一个 scheme,认证信息,主机名,端口,路径,查询参数和片段。 s := "postgres://user:pass@host.com:5432/path?k=v#f" //解析这个 URL 并确保解析没有出错。 u, err := url.Parse(s) if err != nil { panic(e...阅读全文

开源中国博客 2017-01-15 23:00:11 面码

golang异常处理

package main import ( "fmt" ) type TryTarget func() type CatchTarget func() func TryAndCatch(target TryTarget, catch CatchTarget) { defer func() { if err := recover(); err != nil { catch() } }() target() } func main() { TryAndCatch(func() { panic("抛出...阅读全文

开源中国博客 2017-01-15 03:00:12 醉人的笑容你有没有

go语言中sync包和channel机制

golang中实现并发非常简单,只需在需要并发的函数前面添加关键字"Go",但是如何处理go并发机制中不同goroutine之间的同步与通信,golang 中提供了sync包和channel机制来解决这一问题. sync 包提供了互斥锁这类的基本的同步原语.除 Once 和 WaitGroup 之外的类型大多用于底层库的例程。更高级的同步操作通过信道与通信进行。 type Cond func NewCond(l Locker) *Cond func (c *Cond) Broadcast() f...阅读全文

开源中国博客 2017-01-14 16:00:05 vaptu

raspberry pi 2用golang 控制GPIO

/* # Date: 2016-11-10 # Author: simonzhang # web: www.simonzhang.net # Email: simon-zzm@163.com */ package main import ( "os" "github.com/stianeikeland/go-rpio" "time" ) var ( aio = rpio.Pin(14) fio = rpio.Pin(4) alertCount int = 0 ) // 风扇端口 func fWr...阅读全文

开源中国博客 2017-01-13 15:00:06 zhangzhihai

[Golang]Socket编程01----实现基本功能的Client和Server

支持多连接。 Server运行之后,进入Accept阻塞状态。Accept得到一个Conn之后,开启一个协程,分别有两个协程阻塞在Read和Write。当Read一个数据之后,将Read得到的数据写入readChannel中,之后再对其进行处理。在writeChannel得到一个数据之后,向Conn写入数据。 Client运行后,接入Server,之后开启两个协程阻塞在Read和Write的Channel中。在Scan得到一个数据之后,向writeChannel写入数据,唤醒阻塞的协程向Conn...阅读全文

开源中国博客 2017-01-13 11:00:02 码农小骚年

go单元测试进阶篇

版权声明:本文由腾讯云数据库团队 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/921985001483606833 来源:腾云阁 https://www.qcloud.com/community 作者介绍:熊训德(英文名:Sundy),16年毕业于四川大学大学并加入腾讯。目前在腾讯云从事hadoop生态相关的云存储和计算等后台开发,喜欢并专注于研究大数据、虚拟化和人工智能等相关技术。 本文档说明go语言自带的测试框架...阅读全文

开源中国博客 2017-01-11 17:00:01 偶素浅小浅

GO中的“泛型”?

Golang不支持一般的类似Java中的标记式泛型。很多人因此而十分不满,认为没有泛型增加了很多工作量。而目前由于泛型支持的复杂性,Golang的设计和实现者并没有把这个泛型支持作为紧急需要增加的特性。但是,如果真的没有泛型,就一定不行了么?答案当然是否定的。没有泛型也可以,而且我觉得代码更简单,直接,有趣(个人观点,勿喷)。 我们这里打算以一些例子来讲解Golang中如何处理这个问题。 首先,我们看一个冒泡排序的问题。针对整型数组切片的排序。 package main import ( "fm...阅读全文

开源中国博客 2017-01-11 16:00:00 vaptu

Golang Package-database/sql

一、导入库 import ( "database/sql" _ "github.com/lib/pq" ) 二、连接DB func main() { db, err := sql.Open("postgres", "user=pqgotest dbname=pqgotest sslmode=verify-full") /*db, err := sql.Open("postgres", "postgres://pqgotest:password@localhost/pqgotest?sslmode...阅读全文

开源中国博客 2017-01-10 21:00:10 吃一堑消化不良

Golang 结构体

一、结构体声明和初始化: /*声明结构体*/ type person struct { name string age int } /*初始化结构体,并赋给变量 per*/ per := person {name : "eagle", age : 24} 二、匿名结构体声明和初始化 per := struct { name string age int }{ name : "eagle", age : 24, } /*备注: (1) 匿名结构体的初始化和声明必须合并,不能拆分开 (2) 这里的最...阅读全文

开源中国博客 2017-01-10 20:00:08 吃一堑消化不良

centos 7 golang gogs 部署

centos 7 golang gogs 部署 很久没有时间记录一些东西了,用起来的时候就很麻烦, golang 的安装 yum install go 这个原生安装但是 似乎docker 的环境有问题,主要是gorootpath的问题,会导致后面 go get 报错(import path does not begin with hostname), cd /tmp curl -LO https://storage.googleapis.com/golang/go1.7.linux-amd64....阅读全文

CSDN博客 2016-12-23 11:06 jzbis

Go 1.6中cgo的变化记录

北京时间2016年2月18日凌晨,在Go 1.5发布 半年后,Go 1.6正式Release 了。与Go 1.5的“惊天巨变”(主要指Go自举)相比,Go 1.6的Change 算是很小的了,当然这也与Go 1.6的dev cycle过于短暂有关。但Go社区对此次发布却甚是重视,其热烈程度甚至超出了Go 1.5。在Dave Cheney的倡导 下,Gophers们在全球各地举行了Go 1.6 Release Party。 Go Core Team也在Reddit上开了一个AMA – Ask Me...阅读全文

开源中国博客 2017-01-10 11:00:01 Lancerio

Go语言并发的设计模式和应用场景

生成器 在Python中我们可以使用yield关键字来让一个函数成为生成器,在Go中我们可以使用信道来制造生成器(一种lazy load类似的东西)。 当然我们的信道并不是简单的做阻塞主线的功能来使用的哦。 下面是一个制作自增整数生成器的例子,直到主线向信道索要数据,我们才添加数据到信道: func xrange() chan int{ // xrange用来生成自增的整数 var ch chan int = make(chan int) go func() { // 开出一个goroutine...阅读全文

开源中国博客 2017-01-10 10:00:01 四明狂客

go结构体的使用

go中的struct可以实现oop中的类、方法。go语言中的struct成员可以是任何类型,如普通类型、复合类型、函数、struct、interface等。 入门 //定义 type User struct { name string email string password string } //声明 var user User var userref *User fmt.Println(user) //{} 默认初始化为零值 fmt.Println(userref) //<nil> 未初始...阅读全文

CSDN博客 2016-10-19 14:34 davidsu33

golang自定义模板示例

package main import ( "text/template" "time" "os" ) type User struct { Username, Password string RegTime time.Time } func ShowTime(t time.Time, format string) string { return t.Format(format) } func main() { u := User{"dotcoo", "dotcoopwd", time.Now(...阅读全文

开源中国博客 2017-01-09 11:00:03 面码

使用go build 进行条件编译

当我们编写的Go代码依赖特定平台或者cpu架构的时候,我们需要给出不同的实现 C语言有预处理器,可以通过宏或者#define包含特定平台指定的代码进行编译 但是Go没有预处理器,他是通过 go/build包 里定义的tags和命名约定来让Go的包可以管理不同平台的代码 这篇文章将讲述Go的条件编译系统是如何实现的,并且通过实例来说明如何使用 1. 预备知识:go list命令的使用 在讲条件编译之前需要了解go list的简单用法 go list访问源文件里那些能够影响编译进程内部的数据结构 g...阅读全文

开源中国博客 2017-01-09 11:00:02 henrylee2cn

使用Go语言完成文件夹的MD5计算

案例需求:我们的监测系统会定期的检查配置文件的变动,这些配置文件放置在一个独立的文件夹下面,我们可以通过对于整个的文件夹内所有文件进行md5的计算来完成监测,本文就通过Go语言实现了一个命令行工具,完成上述的需求。 1. 单一文件的md5计算 我们首先将需求任务进行分解,既然需要计算文件夹下的所有文件md5值,我们必须先考虑如何实现单一文件的md5值计算。 下面就是一个简单的md5求值程序,这里我们通过参数传递进去需要计算的文件,然后调用go语言提供的内置的crypto包中的函数来完成取值,计算...阅读全文

CSDN博客 2016-12-20 14:14 u014029783