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

正确使用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 切片:用法和本质

文: 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

golang slice分割和append copy还是引用

1. slice1:= slice[0:2] 引用,非复制,所以任何对slice1或slice的修改都会影响对方 data := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0} data1 := data[0:2] data1[0] = 99 fmt.Println(data1) fmt.Println(data) [99 2] [99 2 3 4 5 6 7 8 9 0] 2.append append 比较特殊 声明: 源slice= src 添加slice = app 结果slice=tar 1)如果len(src) + len(app) <= cap(src) src和tar 是指向同一数据引用 ,即修改src或tar,会影响对方 2)否则 tar 是copy...阅读全文

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

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 名字不能长

Golang复制结构体

Golang中复制结构体,可以使用赋值语句 package main import ( "fmt" ) type Dog struct { age int name string } func main() { roger := Dog{5, "Roger"} mydog := roger fmt.Printf("roger addr %p\n", &roger) fmt.Printf("mydog addr %p\n", &mydog) fmt.Println("Roger and mydog are equal structs?", roger == mydog) mydog.name = "piggie" fmt.Println("Roger and mydog are equal s...阅读全文

博文 2019-10-01 14:32:49 aside section ._1OhGeD

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 棋有此理

Golang 复制文件的三种做法

主要介绍三种复制文件的方法: 使用io.Copy()方法 一次性读取输入文件,然后再一次性写入目标文件 使用buffer一块块地复制文件 方法一 : 使用io.Copy func copy(src, dst string) (int64, error) { sourceFileStat, err := os.Stat(src) if err != nil { return 0, err } if !sourceFileStat.Mode().IsRegular() { return 0, fmt.Errorf("%s is not a regular file", src) } source, err := os.Open(src) if err != nil { return 0, err...阅读全文

博文 2019-03-11 11:34:42 Chole121

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

Google Calendar(日历)设置农历生日提醒

Generate birthday dates base on lunar birthdays for google calendar import Can be used for notifying birthdays using google calendar根据农历生日生成可用于谷歌日历导入的csv文件, 然后导入谷歌日历就可以每年收到所有家人的生日提醒了 打开http://play.golang.org/p/pjHLGH_HjP http://play.golang.org/p/6pt7A7wi1g 修改const example的内容 点击Run 复制粘贴结果到Excel或文本编辑器 refer: https://code.google.com/p/genlunarbirthday...阅读全文

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 无量神通

还在为论文降重发愁吗?一款论文降重神器助你解决烦恼!!

image.png 1. 前言 大家好,我是Asong,今天不做知识分享,在这里给大家推荐一款论文降重神器,有了它,解决了我不少烦恼。这几天在忙论文,维普查询一次就花掉了我80大洋,想想心都在颤呀!!!重复率在27%,为了保险,只好降重,在查重,啊啊啊,我的银子!!!!好在这次降重通过了,只折腾了一次,我的一个同学折腾了4次,心疼!!! 但是今天Asong发现了一款论文降重神器 "MyEpoch论文降重系统" ,有了它,我们就不用在绞尽脑汁去想了,直接复制粘贴,完事,齐活!论文完美达到复制比检测! 2. 降重效果演示 asong去知网下载了一篇学术论文,在降重前后分别使用PaperPass进行了查重,降重前重复率为92%,降重后为19%,这效果杠杠滴呀!!!这里我就是把降重后的句段直接复制粘...阅读全文

博文 2020-05-27 19:33:02 sunsong1997

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)...阅读全文

[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 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语言内存拷贝

package main import "fmt" func main() { slice1 := []byte{1, 2, 3, 4, 5} slice2 := []byte{5, 4, 3} copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中 fmt.Printf("%x\n",slice1) fmt.Printf("%x\n",slice2) copy(slice1, slice2) // 只会复制slice2的3个元素到slice1的前3个位置 fmt.Printf("%x\n",slice1) fmt.Printf("%x\n",slice2) var md5code [16]byte arybyte := md5code[0:16] ...阅读全文

博文 2016-09-19 09:00:22 henry3695

用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

青年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 程序羊