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

正确使用Go的Timer

我们总是会使用Timer去执行一些定时任务,最近在Go语言的定时器使用上面不小心踩到一点问题,这里记录一下。 go demo(input) func demo(input chan interface{}) { for { select { case msg <- input: println(msg) case <-time.After(time.Second * 5): println("5s timer") case <-time.After(time.Second * 10): println("10s timer") } } } 写出上面这段程序的目的是从 input channel 持续接收消息加以处理,同时希望每过5秒钟和每过10秒钟就分别执行一个定时任务。但是当你执行这段程序...阅读全文

博文 2014-11-16 09:30:05 skoo

go语言常用函数:copy

数组切片内容复制 用于将内容从一个数组切片复制到另一个数组切片。如果加入的两个数组切片不一样大,就会按其中较小的那个数组切片的元素个数进行复制。 slice1 := []int{1, 2, 3, 4, 5} slice2 := []int{5, 4, 3} copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中 copy(slice1, slice2) // 只会复制slice2的3个元素到slice1的前3个位置 //http://www.cnblogs.com/osfipin...阅读全文

博文 2015-07-28 03:00:00 osfipin

Go中结构体的使用

结构体写了一小段代码,居然这么坑,看来前面的基础还是没有打好啊。 开始写的结构体代码是这样的,结果就是出不来,报如下错误: missing type in composite literal 代码如下: package main import ( "encoding/json" "fmt" ) type Person struct { Username string Age int Friend []string Addr string } func TestJson() { p1 := &Person{ "zhangsan", 25, {"lisi", "wangwu"}, "Jinlin China", } p, err := json.Marshal(p1) if err != nil...阅读全文

博文 2015-03-29 23:00:01 lovederh

go 切片:用法和本质

文: http://golang.org/doc/articles/slices_usage_and_internals.html中文: http://zh-golang.appsp0t.com/doc/articles/slices_usage_and_internals.html Go的切片类型为处理同类型数据序列提供一个方便而高效的方式。切片有些类似于其他语言中的数组,但是有一些不同寻常的特性。本文将深入切片的本质,并讲解它的用法。 数组 Go的切片是在数组之上的抽象数据类型,因此在了解切片之前必须要要理解数组。 数组类型由指定和长度和元素类型定义。例如,[4]int 类型表示一个四个整数的序列。数组的长度是固定的,长度是数组类型的一部分(int[4] 和 [5]int 是完全不同的类...阅读全文

博文 2016-01-31 05:00:00 yangyangye

golang IO COPY

使用golang实现 IO copy,测试程序如下: package main import ( "fmt" "io" "os" "syscall" ) func main() { var errCh chan error errCh = Go(func() error { return test_stdout() }) if err := <-errCh; err != nil { fmt.Printf("End io_copy: %s\n", err) //return err } } //异步执行 func Go(f func() error) chan error { ch := make(chan error, 1) go func() { ch <- f() }() return...阅读全文

博文 2015-10-30 19:00:03 golang_yh

极路由1s(mt7620a)OpenWrt交叉编译go程序

起因,由于coolpy5核心转换到go语言开发,所以目前超人正在进行相关的技术攻关,在程序编写方面一切都相对顺利。由于coolpy5是一个真正的商业级性能的系统也考滤到coolpy之前的版本已经确定的coolpy是支持以家庭路由器为雾计算节点直接实现智能家居或智慧农业的离线解决方案,所以超人才进行了这一次技术预测试,也为以后coolpy这环节的闭环作准备工作。以下文章关于openwrt相关的基础将会略过,看不懂的朋友请自行查找相关知识点。 略过知识点: 1.linux基础(交叉编译基础) 2.openwrt管理(openwrt基础) 游戏开始: 1.首先通过putty连接到路由器看看路由器cpu架构/这里边有一个错误,你看到的所有cpu相关的描述都是mips字眼,其实极1s路由器的这个cpu...阅读全文

博文 2016-06-17 03:00:02 jacle169

用Go语言开发桌面应用--By TSL

【后天就是本地的”三月三“壮族民歌节了,心情大好就把私藏的东西拿出来分享给大家】 我的基本开发环境是win7 32位,go1.4 windows/386,LiteIDE X 27。其实开发环境不重要 首先我们来安装Go 的GUI库 ,我们即将用到的是Tcl/Tk的Go绑定,作者的Git主页是https://github.com/nsf/gothic ‍a 把第三方库下载到本地: 我们进入作者主页的_examples目录里,把任意一个go例子的代码复制到LiteIDE里作为一个新的go文件,接着 可以点LiteIDE的”编译“菜单,再选择”Get“,这时LiteIDE会自动下载github.com/nsf/gothic ,如果提示Out of path请检查GOPATH环境变量并确认你的文件是...阅读全文

博文 2015-04-19 11:00:05 名字不能长

[总结] Goland 使用技巧

Goland是JetBrains公司出品的一款开发Golang的工具。由于本人是JetBrains公司产品的重度使用者,好多都作为主力开发工具(IntellijI IDEA、PyCharm、WebStorm等),所以Goland一经推出,就成为我开发Golang的首选IDE。 如果你之前使用过Intellij IDEA开发Java程序,那么使用Goland几乎可以做到无缝衔接、直接上手。两者的项目组织结构、快捷键等好多特性都可以通用。 笔者之前总结过一些使用Intellij IDEA的技巧。有部分在Goland下同样适用,在此就不再赘述,下面仅总结一些Goland下特有的部分。 注释("//")不在行首显示,而是自动跟着代码缩进。 在Goland下,注释默认是在行首的,并且其并没有提供修改注...阅读全文

博文 2018-07-05 16:34:58 mr_franklin

golang数据类型-slice(切片)

slice介绍 数组的长度在定义之后无法再次修改;数组是值类型,每次传递都将产生一份副本。显然这种数据结构无法完全满足开发者的真实需求。在初始定义数组时,我们并不知道需要多大的数组,因此我们就需要“动态数组”。在Go里面这种数据结构叫slice,slice并不是真正意义上的动态数组,而是一个引用类型。slice总是指向一个底层array,slice的声明也可以像array一样,只是不需要长度,它是可变长的,可以随时往slice里面加数据。 初看起来,数组切片就像一个指向数组的指针,实际上它拥有自己的数据结构,而不仅仅是个指针。数组切片的数据结构可以抽象为以下3个变量: 1.一个指向原生数组的指针(point):指向数组中slice指定的开始位置; 2.数组切片中的元素个数(len):即sli...阅读全文

博文 2015-06-17 20:17:41 JesseYoung

关于go接口的一些说明

什么是接口 接口是golang最重要的特性之一,在Go中,接口interface其实和其他语言的接口意思没什么区别。interface理解其为一种类型的规范或者约定。一种类型是不是“实现”了一个接口呢?就看这种类型是不是实现了接口中定义的所有方法。接⼝是一个或多个方法签名的集合,任何非接口类型只要拥有与之对应的全部方法实现 (包括相同的名称、参数列表以及返回值。),就表示它"实现" 了该接口,无需显式在该类型上添加接口声明。此种方式又被称作Duck Type。 接口的实例化 接口是可被实例化的类型,而不仅仅是语言上的约束规范。当我们创建接口变量时,将会为其分配内存,并将赋值给它的对象拷贝存储。将对象赋值给接口变量时,会发生值拷贝行为。没错,接口内部存储的是指向这个复制品的指针。而且我们无法修...阅读全文

博文 2014-10-04 19:26:23 壬癸甲乙

golang--监控goroutine异常退出

在golang中,我们可以很轻易产生数以万计的goroutine,不过这也带来了麻烦:在运行中某一个goroutine异常退出,怎么办? 在erlang中,有link原语,2个进程可以链接在一起,一个在异常退出的时候,向另一个进程呼喊崩溃的原因,然后由另一个进程处理这些信号,包括是否重启这个进程。在这方面,erlang的确做得很好,估计以后这个特性会在golang中得到实现。 由此得到启发,我写了一个简单的程序,监控goroutine异常退出。 package main import ( "log" "runtime" "math/rand" "time" ) type message struct { normal bool //true means exit normal, otherw...阅读全文

博文 2014-10-04 19:26:02 getong

golang导入GitHub中的包

有时候我们需要将网络上的包导入到自己的项目中,当然我们完全把别人的包先下载下来然后然后放在自己的项目中,这样我们就可以使用,其实我今天讲的也是把GitHub上面的我们所需要的包给弄到本地为我们所使用。 特此我创建了仓库,并在上面创建了一个包 废话不多说,上菜: 餐具: 我相信golang的环境已经配置好了,配置好的go环境,我们在src里面码代码,以前我们也需要GitHub上面的包,这主要是在配置VSCode调试环境的时候装的,今天我准备使用我自己的包,首先看我的GitHub:我的GitHub 目录结构 我的这个目录结构很简单,里面就一个文件夹,这个文件夹里面只有跟目录相同的一个go文件;现在我就把里面的sliceHandle包导入到我本地的环境中; 茶水: 打开终端,输入:go get g...阅读全文

博文 2018-12-06 20:34:49 吴敬悦

在Go里使用OpenCL,"下雨天压榨GPU更配哦"

文标题: 能在Go里用GPU运算的OpenCL语言绑定包 首先网页访问https://github.com/pseudomind/go-opencl/了解一下,然后下载它 C:\go\src\src>go get github.com/pseudomind/go-opencl/cl 再搜索一下你的OpenCL.dll文件,把它复制到gcc编译器的lib目录里比如我在c盘搜索出opencl.dll,把它复制到了C:\TDM-GCC-32\lib\里 用LiteIDE打开https://github.com/pseudomind/go-opencl/tree/master/examples/clinfo里面的例子,可以run了 examples/rotate里面的例子,要build后,在cmd窗...阅读全文

博文 2015-08-13 09:00:01 名字不能长

Mingw静态编译go-sqlite3包

在github.com/mattn/go-sqlite3上,作者说在windows下使用go-sqlite3要使用动态链接的方法[Go does not support static linking for external C library; sqlite3 should be built as a shared library. If it runs on Windows, it needs dll.],结合网上的资源,我整理出了如何使用静态编译的方法使用go-sqlite3。 折腾的过程中发现使用go get命令的时候会把源码下载到go的安装目录\src\pkg\下,然后使用go install 的时候会编译包再安装的pkg目录下。src\pkg\github.com\mattn\g...阅读全文

博文 2014-10-04 19:26:07 棋有此理

Go语言和Tcl/Tk GUI库的例子1 按钮

a 用vtcl建立一个新project,然后制作界面并保存 我自己做的 如图1 b 打开vtcl产生的main.tcl文件,我们即将进行提取关于界面的代码 复制如下匹配的n行代码, ################### # CREATING WIDGETS ################### 。。。此处省略Tcl/Tk代码n行 ################### # SETTING GEOMETRY ################### 。。。此处省略Tcl/Tk代码n行 ############################################################################### 我复制出来的大概100多行,接着要进行删除精简 1...阅读全文

博文 2015-04-30 18:00:00 名字不能长

golang os

const ( O_RDONLY int = syscall.O_RDONLY // open the file read-only. O_WRONLY int = syscall.O_WRONLY // open the file write-only. O_RDWR int = syscall.O_RDWR // open the file read-write. O_APPEND int = syscall.O_APPEND // append data to the file when writing. O_CREATE int = syscall.O_CREAT // create a new file if none exists. O_EXCL int = syscall.O_...阅读全文

博文 2014-10-04 19:26:01 ggaaooppeennngg

go语言使用protobuf

网上为什么充斥着大量几乎一模一样而且不正确的教程??? 妈的打开一个关于golang和protobuf的教程,无非都是扯他妈的protobuf多么多么牛逼,xml多么多么傻逼,然后就是怎么安装protobuf,然后又是屎一样的示例。 安装过程没一个对的,我搜了那么多博客,全都是一个德行,我先写一下ubuntu的安装步骤,同时适用于mac和其他linux,而且保证是对的。 真的无力吐槽,先说正事,一会接着吐。 一、首先去 https://github.com/google/protobuf 下载protobuf,按照readme的步骤来编译安装。如果执行autogen.sh的过程中出现autoreconf not found的错误,说明没有安装automake,在ubuntu执行sudo ap...阅读全文

博文 2015-07-25 03:00:11 wolfred7464

Golang 中使用多维 map

http://tnt.wicast.tk/2015/11/02/golang-multiple-dimension-map/ Golang 的 XML/JSON 解析库乍看使用起来很方便,只要构造一样结构的 Struct 就可以一下子导入到变量中去了.其实手工构造 Struct 非常容易出现结构偏差,而且最要命的是 Unmarshal() 执行的时候不是严格导入所以没有任何报错. 于是这两天写了一个给 Golang 用的 XML to Struct 生成器,希望能一劳永逸. 不过在制作过程中有遇到了一个不太容易发现的坑……也就是标题所说的多维 map. 什么是 map 首先 Golang 中的 map 与 JS,Py 里的 Map 函数并不是同一回事。前者是 Golang 中的一种基础数据类...阅读全文

博文 2017-09-21 22:30:01 grimm

golang 应用的部署相关技术

nohup命令 在 linux 下面部署,我们可以利用 nohup 命令,把应用部署在后端,如下所示: nohup ./yourapp & 这样你的应用就跑在了 Linux 系统的守护进程 nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。 一般如何如下两种方式使用它: nohup command 或者 nohup command & 这之间的差别是带&的命令行,即使terminal(终端)关闭,或者电脑死机程序依然运行(前提是你把程序递交到服务器上); 使用它需要注意的问题是:它把标准输出(STDOUT)和标准错误(STDE...阅读全文

博文 2014-10-04 19:26:13 ghj1976

vim中go的语法高亮设置

测试环境:ubuntu 14.04 之kylin 版 vim本身不带golang的语法高亮 解决方案: 在 /usr/share/vim/vim74/ 中 有这么几个文件夹:syntax, ftplugin, indent, compiler等, 我们查看syntax可以看到有gcc.vim等其他语法文件,但是没有go.vim, 好在我们可以从源码下载 http://www.golangtc.com/download 下载 go1.3.3.src.tar.gzgo1.3.3 (source only),解压缩, 将下载目录的 go/misc/vim/中有对应的 syntax, ftplugin, indent, compiler 中的go.vim文件复制到/usr/share/vim/vim...阅读全文

notepad++支持go语言高亮与go语言插件

一、notepad++安装go语言插件 notepad++是十分流行的文本编辑器,而它拥有强大的功能,比如它可以支持go语言。当然这需要go语言相应的插件。 打开notepad++后,选择插件选项,在插件下选Plugin Manager-->Show Plugin Manager-->在Plugin中选择GOnpp选Install; 二、notepad++支持go语言高亮 1.在Go的安装目录下,找到misc文件夹,打开notepadplus文件夹,编辑userDefineLang.xml文件,将文件中的的注释去掉,注意是去掉注释,不是把它俩去掉。 2.将该目录(misc/notepadplus)下的go.xml复制到notepad++...阅读全文

go-mod 入门

Q群有人问go mod 问题,自己也忘了些.顺便再整理下. GO111MODULE可以设置为三个字符串值之一:off,on或auto(默认值)。 off 则go命令从不使用新模块支持。它查找vendor 目录和GOPATH模式”。 on 则go命令需要使用模块,go 会忽略 $GOPATH 和 vendor 文件夹,只根据go.mod下载依赖。 auto 或未设置,则go命令根据当前目录启用或禁用模块支持。仅当当前目录位于$GOPATH/src之外并且其本身包含go.mod文件或位于包含go.mod文件的目录下时,才启用模块支持。 如果需要查看go module的详细文档(非常长),可以在控制台输入 go help modules go mod命令 download download mod...阅读全文

博文 2019-01-09 11:34:47 名之白

为何这个叫艾派的程序员会是13亿人心中的暖男?

艾派是谁? 艾派是一个非典型的中国小伙子,长着一张鹅蛋脸型,皮肤白皙,透着一点象征着健康的粉色,嫩得感觉可以掐出水来。在冬日暖阳里,仔细瞧着艾派的侧脸,还能瞥见那些安静地生长着的浅色柔软的汗毛。这样的面孔让艾派多了点阴柔,少了点阳刚之气。可是他一旦打开话夹子或者扯着嗓门吼上一首电影《红高粱》的曲子——妹妹你大胆地往前走...往前走...莫回呀头通天的大路...九千九百...九千九百九呀...那骨子里流淌的中国男子气概的血脉就彰显无疑了。艾派喜欢浏览网页上的段子,也爱说一些荤段子,憨笑起来,还有点程序员似的耿直痴傻,是的,艾派的工作就是拿着每月一万多工资的程序员,但是他的情商不低,是属于承蒙中国13亿人口厚爱的暖男,还是男女通吃,不分老弱病残的那种...... 暖男的标准 ...阅读全文

golang之array

数组 √ golang数组包含的每个数据称为数组元素(element),数组包含的元素个数被称为数组长度(length)。 √ golang数组的长度在定义后不可更改,并且在声明时可以是一个常量或常量表达式(在编译期即可计算结果的表达式)。golang数组长度是一个内置常量,可以用len()函数来获取。 √ golang数组是一个值类型,在赋值和作为参数传递时都将产生一次复制动作,因此在函数体中无法修改传入的数组的内容。 • 数组声明和初始化 ▶ 数组声明 ▪ 语法如下 // 数组声明 var array [n]Type // 数组声明和初始化 var array [n]Type = [n]Type{v1, v2, ..., vn} var array = [n]Type{v1, v2, ....阅读全文

博文 2016-02-20 03:00:04 heartchord

emacs配置golang

昨天看到同事再用emacs,好强大的样子,让我这种伪emacser羡慕不已,回来之后就寻思着再折腾折腾emacs. 首先下载golang官方的emacs mode: http://golang.org/misc/emacs/go-mode.el 下载auto-complete http://cx4a.org/software/auto-complete/#Downloads 然后解压文件到任意目录:auto-complete cd auto-complete make make install 选择要安装到得目录 再emacs得配置文件中添加 (add-to-list 'load-path "INSTALLPATH/auto-complete") (require 'auto-complet...阅读全文

博文 2014-10-04 19:26:52 无量神通

热议ING:大学生玩转云计算的一百种方法

摘要:大学生+想象力+技术,你猜,这三者结合的力量有多大?答案正在不断更新ING ![22](https://img.alicdn.com/tfs/TB18ZKhQFXXXXX1XXXXXXXXXXXX-735-397.jpg) 借助科技普惠的力量,阿里云以近乎免费的价格,于2015年推出“云翼计划”,旨在降低大学生接触云计算领域的成本,培育出更多云计算领域的人才。 2017年,阿里云的“云翼计划”再次升级,将原云服务器配置(1核1G)升级到1核2G,优惠价格仍然保持9.9元/月不变(原价:108元/月),且续费同价。 ![33](https://img.alicdn.com/tfs/TB1gqScQFXXXXbTXXXXXXXXXXXX-790-318.jpg)...阅读全文

go interface的一点心得

先看golanger.com关于interface的说明 *Interfaces in Go provide a way to specify the behavior of an object: if something can do this, then it can be used here* 翻译下来就是: interfaces 用来指定一个object的的行为,如果该object能够执行该行为,这个接口就可以替代这个对象。 文档中举了一个例子: fmt包中的Fprintf方法 `func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)...阅读全文

MySQL金融版发布会:4个男人能擦出的火花

摘要: 2017年8月10日,云栖社区将迎来一场特殊的直播——阿里云数据库MySQL金融版线上发布会。 届时,我们不仅请到了阿里云金融业务部总监九河、阿里云数据库掌门人褚霸以及阿里云数据库产品专家乙休来一起宣布这个好消息,同时还邀请到一位在金融界绝对是重磅级人物的神秘嘉宾,一起来聊一聊产品发布背后的故事。 2017年8月10日下午14:00,云栖社区将迎来一场特殊的直播——阿里云数据库MySQL金融版线上发布会。 届时,我们不仅请到了阿里云金融业务部总监九河、阿里云数据库掌门人褚霸以及阿里云数据库产品专家乙休来一起宣布这个好消息,同时还邀请到一位在金融界绝对是重磅级人物的神秘嘉宾,一起来聊一聊产品发布背后的故事! 那么,MySQL金融版又是一个什么样的数据库呢?顾名思义,它就是一款...阅读全文

[golang把文件复制到另一个目录]

//本程序 主要功能是把A文件夹下的文件与B目录下文件对比,如果找到就覆盖到B相应的目录下。 // 用法: merge A目录 B目录 // merge.go package main import ( "flag" "fmt" "os" "path/filepath" "strings" "time" "github.com/Unknwon/com" ) const ( IsDirectory = iota IsRegular IsSymlink ) type sysFile struct { fType int fName string fLink string fSize int64 fMtime time.Time fPerm os.FileMode } type F struct ...阅读全文

博文 2016-09-07 12:00:02 zistxym

Everybody Go Go Go!!!

Everybody Go Go Go!!! 一起走向通往梦想的道路 我是谁 Hello,各位大佬们,我的名字叫孙龙,在校大学生,信息与计算科学专业,热衷于编程,故创此博客,和大家一起走进有趣的编程世界进行学习和分享,新人报到,请多多关照。 学什么 C语言是母体语言,是人机交互接近底层的桥梁,学好C/C++,相当于掌握技术核心,同时,我将要学好语言、算法、数据结构、操作系统和计算机网络。 怎么学 欲戴王冠,必承其重 学习需要兴趣,兴趣是最好的老师,培养对学习编程的兴趣,不叫苦,不叫累,学好专业课的同时,用大量的课余时间来学习编程,将其养成习惯,久而久之将领悟到其真正内涵。 My World int main() { printf("---欢迎来到我的编程世界---\n"); printf(" ...阅读全文

Go语言核心编程 3.2-slice切片

Slice(切片)代表变长的序列,序列中每个元素都有相同的类型。一个slice类型一般写作[]T,其中T代表slice中元素的类型;slice的语法和数组很像,只是没有固定长度而已。数组和slice之间有着紧密的联系。一个slice是一个轻量级的数据结构,提供了访问数组子序列(或者全部)元素的功能,而且slice的底层确实引用一个数组对象。一个slice由三个部分构成:指针、长度和容量。指针指向第一个slice元素对应的底层数组元素的地址,要注意的是slice的第一个元素并不一定就是数组的第一个元素。长度对应slice中元素的数目;长度不能超过容量,容量一般是从slice的开始位置到底层数据的结尾位置。内置的len和cap函数分别返回slice的长度和容量。多个slice之间可以共享底层的数...阅读全文

博文 2016-03-22 21:00:05 abv123456789

离线版的Golang官方文档

由于众所周知的原因,Golang不支持国内使用。当查文档或者升级版本的时候就会比较苦恼。有的时候实在是没辙,就用必应的缓存页看文档,下载升级包也是各种想辙。每次都很麻烦。 为了我自己能方便点用,我把Golang官方文档的页面都下载下来放在我的VPS上面。VPS也不是每天都能连得上,趁昨天有机会赶紧放上去,然后用CDN加速。链接: http://cyeam.com/go/pkg/index.html 这让我想起前几天看到的一条微博。说古巴的一个网站,架设在了万恶的美帝,万恶的美帝不让他们用这个网站。古巴的屌丝们都是把这个网站整站下载到U盘里面偷出美帝进行浏览。异曲同工,哈哈哈。 下载整站用了命令: wget -r -p -np -k http://URL -r 递归下载 -p 下载html里面...阅读全文

博文 2017-02-09 12:25:37 Bryce

golang begin

1. install go 2. configure sublimehttp://blog.csdn.net/cyxcw1/article/details/10329481 3.io package 1) io.Reader 1 // io.Reader 接口示例 2 package main 3 4 import ( 5 "fmt" 6 "io" 7 "os" 8 "strings" 9 ) 10 11 func main() { 12 FOREND: 13 for { 14 readerMenu() 15 16 var ch string 17 fmt.Scanln(&ch) 18 var ( 19 data []byte 20 err error 21 ) 22 switch stri...阅读全文

博文 2014-10-04 19:26:01 harrysun

用go写windows系统服务

用go+nssm非常容易实现windows系统服务,先看下面的程序 package main func main() { //Call this function where the action happpens doStuff() } func doStuff() { for { //the actual stuff happens here. } } 下载nssm复制到c:\windows目录,执行 nssm install MyService d:\MyService.exe nssm下载地址:http://nssm.cc/description 参考http://sanatgersappa.blogspot.co.id/2013/07/windows-service-with-go...阅读全文

博文 2017-09-09 12:57:12 YiYou.Org

golang map to struct

http://stackoverflow.com/questions/26744873/converting-map-to-struct func SetField(obj interface{}, name string, value interface{}) error { structValue := reflect.ValueOf(obj).Elem() structFieldValue := structValue.FieldByName(name) if !structFieldValue.IsValid() { return fmt.Errorf("No such field: %s in obj", name) } if !structFieldValue.CanSet() ...阅读全文

博文 2016-06-16 13:00:15 diegodu

简单的spider框架-带sample

之前参考别人的一些材料,做的一个简单的spider框架,里面带有一个小sample,以前挂在oschina上,现在挂到github上,欢迎大家批评给建议。 https://github.com/colefan/game_spider 另外,在做一个tcp服务器框架,还在制作中,有兴趣的同学,相互讨论哦。 https://github.com/colefan/gsg...阅读全文

golang---vim语法高亮

下载   在http://www.golangtc.com/download上下载 go1.3beta2.src.tar.gz版本,高于这个版本中没有vim的配置了。 解压 tar zxf go1.3beta2.src.tar.gz 配置 方式一   将下载目录的go/misc/vim/中有对应的 syntax, ftplugin, indent, compiler 中的go.vim文件复制到/usr/share/vim/vim74/对应目录,ftdetect文件夹包括文件复制到vim74中 方式二(无需root权限)   go/misc/vim/目录下文件拷贝到~/.vim/目录下(如果没有该目录则新建) mkdir ~/.vim cp -r vim/* ~/.vim/   新建~/.vi...阅读全文

博文 2016-07-09 13:00:01 FreeApe

Go的依赖管理

最近使用Go语言写了一个线上Session复制工具。对Go工程的依赖管理感到很是不满意。不满意的原因有以下几点。 过度依赖仓库,甚至将仓库的网址作为命名空间。 不能支持指定版本或者tag。 根据对Go的依赖管理的观察,可以观察到以下几点。 在执行go get的时候会扫描import的部分 将依赖拉取到src目录下面,并进行前一个步骤 当所有的依赖都拉取完成后,直接使用广度优先搜索算法搜索依赖图并进行编译。 那么解决方法就非常简单了。 设计一个配置文件,用来指定每个项目的branch或tag 将所有项目从仓库牵出到指定的brnach或tag上 扫描所有文件的import部分,构建编译的依赖关系图 广度优先遍历依赖关系图,进行编译 玩Go不久,不知道是否有更高级的方案或者已有的方案解决Go工程...阅读全文

博文 2014-11-22 17:00:01 David_Alpha_Fox

青年PM倪超:想让程序员多一点点幸福感

摘要: 本文主人公倪超,在内部,同事都习惯叫他花名银时,是阿里云产品经理。前不久,他所负责的企业级分布式应用服务EDAS,荣获了公司2018财年年度最佳产品奖。在五四青年节来临之际,我们有幸近距离的探访了这位青年产品经理。 21岁加入阿里巴巴集团,从一名实习生转变为主导平台级产品的PM,8年间,一直在阿里巴巴核心技术团队,倪超身上几乎所有的优点、缺点都打上了阿里巴巴的很多烙印,散发着浓浓的工程师特质,包括:敢拼、内向、稳重... 大学同班同学中,他是最务实的 据倪超的同学回忆道,在大学的时候,他就是同班同学中是最喜欢折腾技术的一个,不爱打游戏,总是坐在电脑前写代码。常常拉着我们使用他开发的网站,现在看来就是一个非常简单的系统,在我们的电脑上发表一个评论,在他自己的电脑上就能...阅读全文

Go Modules使用教程

引入 https://talks.godoc.org/github.com/myitcv/talks/2018-08-15-glug-modules/main.slide#1 Go Modules介绍 Modules是Go 1.11中新增的实验性功能,基于vgo演变而来,是一个新型的包管理工具。 常见的包管理工具 govendor dep glide godep 这些包管理工具都是基于GOPATH或者vendor目录,并不能很好的解决不同版本依赖问题。Modules是在GOPATH之外一套新的包管理方式。 如何激活Modules 首先要把go升级到1.11。 升级后,可以设置通过一个环境变量GO111MODULE来激活modules: GO111MODULE=off,go命令行将不会支持mo...阅读全文

博文 2018-10-16 17:34:40 andyidea

并发map --- sync map分析

[TOC] 本文基于1.10源码分析 如之前的文章可以看到,golang中的map是不支持并发操作的,golang推荐用户直接用读写锁对map进行保护,也有第三方类库使用分段锁。在1.19版本中,golang基于原本的map,新增了一个支持并发操作的map,叫sync map。 下面我们先介绍一下它的用法,然后在介绍原理,最后详细看看代码。 用法 基本api有这几个 Store 写入 Load 读取,返回值有两个,第一个是value,第二个是bool变量表示key是否存在 Delete 删除 LoadOrStore 存在就读,不存在就写 Range 遍历,注意遍历的快照 sync map底层使用map[interface{}]* entry来做存储,所以无论key还是value都是支持多种数...阅读全文

博文 2018-11-10 13:34:40 123archu

網站連線有問題

最近一個月,遇到幾次連線不上的情況,每次都持續超過一天,於是簽到就斷了... 一開始以為網站掛了,後來發現不是,這真讓人不開心... 不是每條線路來源都有問題,但就是有些線路會開不了. 好像 http 是有連上,但轉到 https 卻無法取得回應... 我用自己兩條線路測,主線走 https 不通,用副線就行. 會是什麼問題呢? ![uncon.jpg](https://static.studygolang.com/171222/dbf111e105df73fc476f78add0d535a5.jpg...阅读全文

go连接数据库,第三方包安装

以mysql为例,go没有实现连接数据库的驱动,只是提供了接口,供第三方实现 首先安装第三方包 cmd执行 go get 命令 在执行go get 命令之前,确保你的电脑配置了环境变量GOPATH,并且安装了git 执行: go get github.com/go-sql-driver/mysql 接下来就会自动安装了,安装成功之后,就可以使用了 package main import ( _"github.com/go-sql-driver/mysql" "database/sql" "fmt" ) type Users struct{ username string pwd string } func main() { db,err := sql.Open("mysql","yld:12...阅读全文

博文 2017-05-22 07:00:25 程序羊

[译文] 关于Golang的一个令我深深叹服的特性

自:http://golanghome.com/post/155 [译文] 关于Golang的一个令我深深叹服的特性 原文地址:这里 译文: 翻译By:@jemygraw 补充说明:一些评论的人对本文中的一些内容感到很困惑,但是我不想让大家感到我言语不清,所以在此澄清一下: 是的, 默认情况下,向一个hash表插入的元素是没有固定顺序的。但是因为很多原因,比如有一些帖子就指出了不是所有的map都是hash表(而且有些语言还有有顺序的hash表,比如java的TreeMap), 我还是能够了解为什么很多人(尤其是对Go map实现机制比较了解的人)会假定遍历map元素的顺序和向map插入元素的顺序是相同的。 我原来的例子是我自己想出来的,并没有演示出大多数版本的Go关于这方面的特点(尽管我听说...阅读全文

博文 2014-10-09 16:00:02 leonzhouwei

go语言开发环境配置:sublime text3+gosublime+gocode

----------------------------------------开发环境配置 http://blog.csdn.net/wolinxuebin/article/details/7724049 Go语言的开发环境配置的经验总结: 可参考:http://www.cnblogs.com/yjf512/archive/2012/06/19/2555248.html 配置gocode(可选): 通过eclipse git下载gocode源代码到:G:\360CloudUI\Cache\120876992\work\git_repo\gocode 复制gocode目录到D:\Go\bin中 cmd执行:D:\Go\bin>go build ./gocode 生成gocode.exe文件 ...阅读全文

博文 2014-10-04 19:26:01 tower888

go语言四——脚本一

工作中用go语言写了点脚本代替python的功能,涉及文件读写,记录如下 package main import ( "os" "os/exec" "log" "bytes" "strings" "bufio" //文件读写 "strconv" // "fmt" ) const pwd = "/usr/local/nginx/htdocs/" func get_logname(ziplog_name string) (string) { var out bytes.Buffer //hint:用exec.Command获取一个Cmd对象,设置标准输出到out,执行Run操作 cmd := exec.Command("unzip","-o",ziplog_name,"-d",ziplog_na...阅读全文

博文 2014-10-04 19:26:27 ciaos

Go的GUI

在运行github.com/lxn/walk包里的demo的时候出现了一些问题,这里做一下记录。 1、先go get github.com/lxn/walk包,写一个简单的demo,go build 生成.exe文件,这里没问题,然后就去运行它发现无法运行。 2、根据readme 然后又去下载 github.com/akavel/rsrc包,在生成的rsrc.exe文件目录下 创建一个manifest文件命令:mkdir test.manifest。然后运行rsrc -manifest test.manifest -o rsrc.syso就不会出错啦。 3、然后将生成的 rsrc.syso复制到你的项目目录下。重新go build此时生成的.exe文件就可用啦...阅读全文

博文 2017-12-06 10:12:19 tytian

流量拷贝-gor

常见的 Web 应用的压力测试工具 Web 应用压力测试工具有很多,比如 Apache ab,node-ab,Apache JMeter, LoadRunner, httperf。但是这些工具都没能解决一个问题: 如何正确模拟生产环境的流量 如今 Web 应用的架构变得非常复杂,内部包含复杂的各种负载均衡、 服务和 RPC 调用关系,简单的发送 GET 请求到某些 URL 或者 API 接口完全无法模拟真实的流量。假如回放 HTTP 日志,操作又异常麻烦。Tcpcopy 虽然能够复制实时流量,但是操作也很复杂。之前的 亚马逊云平台的迁移 就用到了 Gor 这个工具。 Gor 是 Web 应用压力测试的完美方案 我一直在找一个简单又方便的解决方案,直到找到了 Gor 。Gor 是用 Golan...阅读全文

博文 2017-07-02 16:11:21 xingfei