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

正确使用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/golang main() init()方法的调用

main() ,init()方法是go中默认的两个方法,两个保留的关键字。 init()方法 是在任何package中都可以出现,但是建议 每个package中只包含一个init()函数比较好,容易理解。 但是main() 方法只能用在package main 中。 Go程序会自动调用init()和main(),所以你不需要在任何地方调用这两个函数。每个 package中的init函数都是可选的,但package main就必须包含一个main函数。 程序的初始化和执行都起始于main包。如果main包还导入了其它的包,那么就会在编译时 将它们依次导入。有时一个包会被多个包同时导入,那么它只会被导入一次(例如很多包可 能都会用到fmt包,但它只会被导入一次,因为没有必要导入多次)。当一个包被...阅读全文

博文 2015-10-20 13:00:05 u011156212

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 import用法

import "fmt"最常用的一种形式 import "./test"导入同一目录下test包中的内容 import f "fmt"导入fmt,并给他启别名f import . "fmt",将fmt启用别名".",这样就可以直接使用其内容,而不用再添加fmt,如fmt.Println可以直接写成Println import _ "fmt" 表示不使用该包,而是只是使用该包的init函数,并不显示的使用该包的其他内容。注意:这种形式的import,当import时就执行了fmt包中的init函数,而不能够使用该包的其他函数...阅读全文

博文 2015-11-26 18:00:00 chenbaoke

Go 导入当前项目下的包

其实和其他语言很类似 import ( "../controllers" //这里就是导入上一级目录中的controllers "./models" //同一级目录中的models "./models/entitys" //当前目录下的entitys "../../routers" //上两级目录的routers ) 当然也可以把写好的组件放入$GoPath的src中,这样就不需要关心目录是哪一层,只需要类似这样调用就好了: import ( "myproject/controllers" //这里就是自己项目的名字+包名 ...阅读全文

博文 2017-01-24 03:00:03 KelvinQ

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

Intellij IDEA ,按Ctrl+左键,不能进入类或方法的【解决办法】,提示Cannot find declaration to go to

Intellij IDEA ,按Ctrl+左键,不能进入类或方法的【解决办法】,提示Cannot find declaration to go to 2017年8月4日 朱宏亮%1 $ S Intellij IDEA ,按Ctrl+左键,不能进入类或方法的【解决办法】,提示Cannot find declaration to go to 如图,,按住Ctrl+鼠标单击的时候,系统提示Cannot find declaration to go to。 原因:导入项目的时候使用的是Open而不是Import Project。 解决方法:关闭当前项目,如图点击Import PrOject,导入项目即可 标签:Cannot find declaration to go to、Intelli...阅读全文

博文 2017-12-04 06:01:01 zy_zhengyang

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

goland 使用go module

安装 先升级go 版本到1.11.1 及以上 安装vgo go get -u golang.org/x/vgo. 安装完之后重启goland new project的时候会出现一个vgo项目选项。 屏幕快照 2018-10-18 上午9.30.54.png 创建完之后goland 创建自动创建 go.mod 文件 创建工程 GO111MODULE 环境变量 默认GO111MODULE 为auto 在gopath路径下会从gopath 或者vendor中寻找依赖包,在外部会使用go module的方式寻找依赖包 GO111MODULE =on 只会使用go module的方式寻找依赖包 这里我们设置GO111MODULE 为on 并且在gopath路径外创建一个工程. 屏幕快照 2018-10...阅读全文

博文 2018-10-18 11:34:41 myonlyzzy

Go项目结构和模块导入

Go项目结构和模块导入 golang项目结构与其他语言类似,但是仍然有一些需要注意的地方。 项目结构 环境配置 go 命令依赖一个重要的环境变量:$GOPATH,它表示GO项目的路径,如下设置 export GOPATH=/home/t/gospace 对于GOPATH来说,允许多个项目目录(Unix中为“:”,Windows中为“;”)。 项目目录 在项目目录中,一般包含三个文件夹,分别为src,pkg和 bin。各个文件夹功能如下, src 存放golang源码 pkg 存放编译后的文件 bin 存放编译后可执行的文件 模块导入 在golang中,模块导入包括两种导入方式:相对路径和绝对路径。 相对导入 当前文件同一目录的model目录,但是不建议这种方式来import import (...阅读全文

博文 2015-09-18 03:00:00 coder2012

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

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 import 下划线 的实现原理

这个操作经常是让很多人费解的一个操作符,请看下面这个import import ( “database/sql” _ “github.com/ziutek/mymysql/godrv” ) // _操作其实是引入该包,而不直接使用包里面的函数,而是调用了该包里面的init函数, // 要理解这个问题,需要看下面这个图,理解包是怎么按照顺序加载的: 程序的初始化和执行都起始于main包。如果main包还导入了其它的包,那么就会在编译时将它们依次导入。有时一个包会被多个包同时导入,那么它只会被 导入一次(例如很多包可能都会用到fmt包,但它只会被导入一次,因为没有必要导入多次)。当一个包被导入时,如果该包还导入了其它的包,那么会先将其它 包导入进来,然后再对这些包中的包级常量和变量进行初始化,接...阅读全文

博文 2015-09-28 18:00:03 webyh

go Notepad++ 语法高亮

go 自带了notepad++的语法高亮配置,只需要在notepad++里导入即可: 1. 打开go的安装目录misc\notepadplus下的userDefineLang.xml,把开头的和结尾的的注释取消掉 2. 把misc\notepadplus目录下的go.xml放到notepad++安装目录下的plugins\APIs目录里 3. 打开notepad++,菜单:语言=>Define you language,在弹出的对话框里导入刚才的userDefineLang.xml即 转自:http://www.cnblogs.com/potoofly/archive/2013/06/03/3115350.htm...阅读全文

博文 2014-10-30 03:00:01 yumuxu

[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写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

protobuf 导入另一文件夹下的proto

环境: protobuf2 ,golang 项目test下 存放proto的目录结构 ---test // 项目根 ------ cs --- cs.proto ------ ss --- ss.proto cs.proto syntax = "proto2"; package cs; message Test{ optional string name = 1; } ss.proto syntax = "proto2"; package ss; import "test/cs/cs.proto"; message Test{ optional cs.Test cstest = 1; } ss.proto 文件引用 cs/cs.proto import 不允许使用相对路径Backslashe...阅读全文

博文 2020-04-23 10:32:51 yddeng

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

golang 导入自定义结构体、实现接口

项目根目录为mygo,新建go文件,写一个入口函数 package main func main() { } 先新建一个新建model文件夹并新建.go文件(文件名随意无影响),自定义结构体 package people type Info struct { Age int } type People struct { Name string Info Info } func (p People) Getname() string { return p.Name } func (p People) Setname(name string) People { p.Name = name return p } 声明首字母大写可供外部调用 再新建imp文件夹,用来放接口文件,新建.go文件,写一个...阅读全文

博文 2018-07-16 12:34:49 droid_zf

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

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

Goread:用Go编写的Google Reader的开源实现

《Goread:用Go编写的Google Reader的开源实现》作者对GR的现有开源实现并不满意,于是自己实现了一个版本——Goread,它具有如下特性:支持导入OPML、移动端支持良好、不需要安装其他支持、和GR有相同的键盘快捷键、简洁快速……详见: http://www.goread.io...阅读全文

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

golang 测试文件xxx_test

go 的版本:go version go1.4.2 windows/386 举例:如果golang的包在同一目录下,比如GOPATH下面src/test/ 目录下有包名package test 如果此时有 test.go 和 test_test.go,那么包导入的时候会自动忽略test_test.go的导入内容 总之,1、如果有多个.go文件时候,并且不都是*_test.go命名,其它命名*_test.go的文件的包都import不进去 2、如果多个.go文件都是*_test.go,则一定会有一个*_test.go文件可以被import 3、 所以最好的做法是在开发环境中不要命名*_test.go的文件,最终测试用例文件可以用*_test.go命...阅读全文

博文 2015-10-11 23:00:07 webyh