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

我的 Go 语言学习之路

## 个人情况简介 徐新华(polaris),[Go 中文网](https://studygolang.com)站长。目前在北京一家创业公司担任 CTO。2011 年春,北京大学硕士毕业,先后在开心网、奇虎 360 工作。本人一直从事服务端相关工作,有着丰富的经验,对前端也有所掌握,Android 开发也了解些。虽然目前管理方面的事情较多,但一直保持着技术学习。擅长服务端技术和架构。 ## 我与 Go 语言 - 2012 年 3 月,Go1.0 正式发布时,有幸参与 360 的一个 Go 项目(关注过 Gopher China 大会的应该知道 360 有一个消息系统,而且 [Go 官方博客](http://blog.golang.com/qihoo)还专门介绍过,这个项目成...阅读全文

GO语言学习: 项目构建 及编译 初步

一个GO工程中主要包含以下三个目录: src:源代码文件 pkg:包文件 bin:相关bin文件 step1: 建立工程文件夹 goproject step2: 在工程文件夹中建立src,pkg,bin文件夹 step3: 在GOPATH中添加projiect路径 例 e:/goproject step4: 如工程中有自己的包examplepackage,那在src文件夹下建立以包名命名的文件夹 例 examplepackage step5;在src文件架下编写主程序代码代码 goproject.go step6;在examplepackage文件夹中编写 examplepackage.go 和 包测试文件 examplepackage_test.go step7; 编译调试包 go bui...阅读全文

博文 2015-06-04 18:00:00 phlong999

还有比这更好的消息吗?— Go支持Android和iOS

minux大神就说了: 代码在 https://bitbucket.org/minux/goios 的 ios3 分支。 初步的文档在 misc/ios/README。交叉编译需要 iOS SDK,得在 OS X 上面开发。理论上如果你能在 Linux 架设交叉编译环境的话,在 Linux 上开发也不是不行。 我计划把这个 port 加入到 Go 1.5。按照 Brad 给出的 1.5 预览, 应该问题不大。http://talks.golang.org/2014/state-of-the-gopher.slide#40 现在的问题是如何架设 builder。 哎,断断续续搞了3年,终于搞定了。我觉得用 Go 开发 iOS 程序比用 Go 开发 Andro...阅读全文

如何优雅地等待所有的goroutine退出

Table of Contents 1. 通过Channel传递退出信号 2. 使用waitgroup goroutine和channel是Go语言非常棒的特色,它们提供了一种非常轻便易用的并发能力。但是当您的应用进程中有很多goroutine的时候,如何在主流程中等待所有的goroutine 退出呢? 1 通过Channel传递退出信号 Go的一大设计哲学就是:通过Channel共享数据,而不是通过共享内存共享数据。主流程可以通过channel向任何goroutine发送停止信号,就像下面这样: func run(done chan int) { for { select { case <-done: fmt.Println("exiting...") done <- 1 break de...阅读全文

Go--包引用介绍

最近在学习Go编程,本文简单的叙述如何在Go编程中使用包(包管理)。 和其他大多数语言一样,Go也存在包,并使用package关键字定义一个包。首先介绍在程序中如何引入包,引入包有以下几种方式: 1. 最简单的方式引入一个包的方式是直接引入包,例如: import "fmt" import "os" 2. 也可以通过下面的方式将包一块引入,并写在括号内: inport ( "fmt" "os" ) 通过上面的方式,可以引入系统包或第三方的包,下面重点介绍如何引入自定义的包和函数: 一般我们将主程序放在src的mian文件夹下(主程序中包含main函数,并将主程序的包名写为package main),将其他模块放在相应的文件夹下,例如下图所示 主函数在main.go文件中,主函数名也可以为其他...阅读全文

博文 2015-11-02 03:00:01 sunshiming

Mac+Sublime+Golang 环境配置所学

关于环境变量: GOPATH是一个路径列表,类似于PATH的设置: GOPATH=/home/USER/go:/home/USER/workspace_go:***在你建好工作空间后,即可开始配置GOPATH了(配置文件是~/.bash_profile)。export GOPATH=/Users/用户名/go:/Users/用户名/Documents/workspace/workspace_go在mac下设置环境变量: 1,打开 应用程序 -> 实用工具 -> 终端;2,在终端中定位到自己用户的主目录,输入: cd ~ ;3,创建一个空文件,输入:touch .bash_profile ;4,编辑这个文件,输入:open .bash_profile ;5,在这个文件中输入:export PA...阅读全文

博文 2014-10-09 16:00:01 guidovanrossum

自己封装的golang 操作数据库方法

这个是我用Go写的第一个东东,可能还存在些BUG没有测试到。这里主要是提供一个参考。各位可以改写成自己的风格。 在命令行下输入如下两条命令,进行安装 go get github.com/male110/SimpleDb go install github.com/male110/SimpleDb Go语言的数据库操作,只能用Rows.Scan来一次性读取所有列。感觉很不习惯,我还是习惯按照列名来一列列的取数据。所以我自己封装了一个数据结构MyRows,MyRows实现了一个函数,GetValue(name string, value interface{})可以按列名来取数据。如下所示: err = rows.GetValue("IsBoy", &isBoy) if err != nil {...阅读全文

博文 2014-10-04 19:27:14 王岩0001

GO -- ORM 框架

这几天在做实训项目,刚好学Go语言,就想使用Go来搭建 socket 服务器 !但是感觉Go 使用sql来注入数据库有点缺陷,最后Golang群上的大神建议使用ORM框架,使用一下确实好用,下面是参照这本的一个简单例子,希望能帮到大家 Code package main import ( "database/sql" "github.com/astaxie/beedb" _ "github.com/ziutek/mymysql/godrv" "time" ) ///////////////////////// type Userinfo struct { Uid int `PK` //如果表的主键不是 id,那么需要加上 pk 注释,显式的说这个字段是主键 Userna...阅读全文

博文 2014-10-10 23:00:00 laohan_

golang日志处理

golang程序日志记录 package main import ( "flag" "fmt" "log" "os" "runtime" ) var ( logFileName = flag.String("log", "cServer.log", "Log file name") ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) flag.Parse() //set logfile Stdout logFile, logErr := os.OpenFile(*logFileName, os.O_CREATE|os.O_RDWR|os.O_APPEND, 0666) if logErr != nil { fmt.Println("Fai...阅读全文

博文 2014-10-04 19:26:52 liaojie

iOS和Android的开发库 Gomobile

Gomobile是一个应用于iOS和Android的优秀跨平台开发库,为开发者提供用于创建Android和iOS 移动平台代码的工具。 ### 环境设置 我们需要Go 1.5及以上版本(版本越高越好)。  然后,我们需要安装Gomobile:

go get golang.org/x/mobile/cmd/gomobile
注:该命令可能需要几分钟的时间。 至于构建Java代码,你则需要Android SDK,并安装Java(OpenJDK就够了)。 [下载](https://developer.android.com/sdk/index.html#...阅读全文

开源项目 2016-03-15 16:00:00 golang

go语言之beego框架orm的使用

models.go ============================ package main import ( "github.com/astaxie/beego/orm" ) type User struct { Id int Name string Profile *Profile `orm:"rel(one)"` // OneToOne relation } type Profile struct { Id int Age int16 User *User `orm:"reverse(one)"` // 设置反向关系(可选) } func init() { // 需要在init中注册定义的model orm.RegisterModel(new(User), new(Profi...阅读全文

博文 2015-06-17 23:05:56 zistxym

Go开源项目 - gorp使用方法

gorp 是一个Go开源ORM框架. Go关系型数据库持久化 我很含糊的称gorp是一个ORM框架. Go还没有真正的对象, 至少没有一个经典的感觉和Smalltalk/Java一样的,这是"O". gorp不知道任何你struct之间的关系(以后会实现,现在还在TODO list中). 所以"R"也是有质疑的(但是我使用这个名字,因为感觉上更贴切). "M"是没有问题的. 给定一些Go结构和一个数据库, gorp应该可以减少你的重复代码. 我希望gorp能节省你的时间并简化从数据库获取数据的苦活来帮助你把精力投入到算法上而不是基础设施上面. 数据库驱动 gorp使用Go1 database/sql包. 一个完整可用的兼容驱动程序如下: http://code.google.com/p/go...阅读全文

博文 2014-10-09 16:55:55 ztiandan

go语言使用protobuf与c++做数据通信。

首先,安装google的protobuf。安装流程请参见我以前的博客 http://blog.csdn.net/eclipser1987/article/details/8525383 安装proto的go语言插件 go get code.google.com/p/goprotobuf/{proto,protoc-gen-go} 编写一个简单的事例,go与c++网络通信: RegMessage.proto package cn.vicky.model.seri; message RegMessage { required int32 id = 1; // 主键,唯一 required string username = 2; // 帐号 required string password = ...阅读全文

博文 2014-10-06 09:42:32 eclipser1987

golang中处理panic的正确姿势

golang中panic的处理没有其他语言中try-catch语法那么简单。 大部分例子的panic处理都是在退出环节。那么如何在正常业务流程中处理panic,然后不影响全局呢? // 业务处理1,定义myStrcture isDone := make(chan int) go func() { defer func() { if err := recover(); err != nil { log.E(this.Ctx, "Skip panic", "tmpInfo=[%+v]", tmpInfo) } isDone <- 1 }() myStrcture.Ip = tmpInfo.Ip myStrcture.Country = tmpInfo.Address.Country.Name /...阅读全文

博文 2018-08-30 15:30:01 lawlietfans

golang 多个项目时如何配置(使用gb在非GOPATH路径下构建项目)

方案1:将每个项目路径写入GOPATH 写了个脚本SetGoPath.sh #!/bin/bash if [[ $GOPATH =~ .*$PWD.* ]] then echo "currnet dir is already in GOPATH" else export GOPATH=$GOPATH:$PWD echo "fininsh setting $PWD in GOPATH" fi 在项目主目录中运行source SetGoPath.sh 将当期项目路径写入GOPATH 方案2 使用gb替代go来构建项目 这个gb就是一个替代go的build 和 test的工具,可以让项目在任意路径时运行构建 github地址:https://github.com/constabula... 首先要...阅读全文

博文 2017-03-16 10:00:54 kel

Golang事务模型

序言 笔者在《软件设计的演变过程》一文中,将通信系统软件的DDD分层模型最终演进为五层模型,即调度层(Schedule)、事务层(Transaction DSL)、环境层(Context)、领域层(Domain)和基础设施层(Infrastructure),我们简单回顾一下: ddd-layer-with-dci-dsl.png 调度层:维护UE的状态模型,只包括业务的本质状态,将接收到的消息派发给事务层。 事务层:对应一个业务流程,比如UE Attach,将各个同步消息或异步消息的处理组合成一个事务,当事务失败时,进行回滚。当事务层收到调度层的消息后,委托环境层的Action进行处理。 环境层:以Action为单位,处理一条同步消息或异步消息,将Domain层的领域对象cast成合适的ro...阅读全文

博文 2017-02-12 00:26:26 _张晓龙_

Go语言-单元测试

今天闲来无事看了下GO语言,首先是看了酷壳耗子大牛的文章,然后下载安装,配置环境等等,由于我下载的是安装版,所以环境变量什么的不用自己配置。然后又刚好去图书馆借了两本书:《Go语言编程》许式伟/吕桂华编著,《Go语言 云动力》樊虹编著,接着就开始看。。 好了,废话不多说,直接进入主题: 在《Go语言编程》我看到他有一些例子,在书的第二章最后,讲的是两种排序的Go语言实现(快速排序和冒泡排序)本文的源代码来自《Go语言编程》许式伟/吕桂华编著 排序本身不重要,因为之前用C,java也实现过,重要的是练练写Go语言,熟悉下语法。 环境: 我设置的GOPATH为:G:\go 然后所有文件及目录如下: 主程序(sorter.go):G:\go\src 排序算法(bubblesort.go、qsort...阅读全文

博文 2015-05-03 16:00:02 Spring_cb

scrud - Go struct/SQL CRUD & Go write SQL

scrud - Go struct/SQL CRUD & Go write SQL === 想要的几乎都有,如果没有的话,请[提交请求](https://github.com/cxr29/scrud/pulls) ### 安装 ```go get github.com/cxr29/scrud``` ### CRUD ```Go import "github.com/cxr29/scrud" import _ "github.com/go-sql-driver/mysql" db, err := scrud.Open("mysql", "user:password@/database") // A, B is struct or *struct n, ...阅读全文

GO支持协程。linux系统是抢占式多任务。

那么 操作系统 会把 CPU的释放 的 功能交给 程序么? 我越用越不明白啊。 那个 《GO语言编程》里说 GO的并行机制 还不完善。 不是 本人测试。也没有他的测试数据。 是不是 就是因为 操作系统和 语言本身对于 CPU的抢占 有冲突。。 请版主 polaris 给一点 指点。。非常 感谢。...阅读全文

Prometheus 系统监控方案 二 安装与配置

下载Prometheus 下载最新安装包,本文说的都是在Linux x64下面内容,其它平台没尝试过,请选择合适的下载。 Prometheus 主程序,主要是负责存储、抓取、聚合、查询方面。 Alertmanager 程序,主要是负责实现报警功能。 Pushgateway 程序,主要是实现接收由Client push过来的指标数据,在指定的时间间隔,由主程序来抓取。 *_exporter 这类是不同系统已经实现了的集成。 下载解压,一般默认的配置就可以运行。 tar xvfz prometheus-*.tar.gz cd prometheus-* go写的东西,直接打包成二进制包了,其本上没有别的依赖。 下面我们主要来了解一下他的配置文件,这是一个非常重要的步聚。 配置Prometheus监...阅读全文

用Golang写一个搜索引擎

用Golang写一个搜索引擎 猜你喜欢 golang入门-- 一个2D的图形库学习 golang入门--一个简单的http client golang的第一个deadlock LiteJob,一个Golang的本地任务调度器 再次自我黑客马拉松--不用第三方库实现一个基于golang的web service 如何利用golang 反射值来定义一个变量 用Golang写一个搜索引擎 用Golang写一个搜索引擎(0x01) 用Golang写一个搜索引擎(0x02) 用Golang写一个搜索引擎(0x03) 前面已经说了倒排索引的基本原理了,原理非常简单,也很好理解,关键是如何设计第二个倒排表,倒排表的第二列也很好设计,第一列就是关键了,为了满足快速查找的性能,设计第一列的结构,我们需要满足以下...阅读全文

博文 2016-04-14 17:00:04 daisongwan

MyMySQL 的 database/sql 接口使用

最近看到不少朋友对 Golang 中操作 MySQL 数据库有疑问,那么就此内容给大家分享一下吧。 MyMySQL 的原作者是来自波兰的 ziutek,他根据 MySQL 的协议标准使用 Golang 实现了 MyMySQL 包。根据他的介绍,这个包可以用在 MySQL 4.1 或更高版本上,并且在 5.0、5.1 版本上经过项目的实际验证。 只要用 MySQL 做过项目的朋友一定遇到过编码问题,set names 几乎成为了中文环境下使用 MySQL 的标配。那么 Golang 也不能例外。不过由于 database/sql 使用了随机的连接池,且未提供任何方法让所有连接都执行某个操作,于是这个麻烦事儿就落到了驱动的肩上。对于中文什么的,大老外一向不怎么在意。我提交了这个 issue 给 ...阅读全文

博文 2014-10-09 16:15:45 mikespook

用http实现文件共享(python和go语言示例)

平时工作中少不了文件共享,所以了解文件共享的方法很有必要。 文件共享有很多方法,大致分为以下几类: 1、系统共享(windows共享或samba等): windows下我们可以借助windows共享完成简单的文件共享,linux下也可以用samba之类的软件轻松实现。 2、ftp共享: 可以借助常见的ftp软件实现。 3、http共享: 可以借助常见的web服务器(比如IIS、Apache等)实现。 今天我要介绍的是http文件共享。 首先以IIS为例介绍下用常用的web服务器实现文件共享的方法,具体如下(以我机器为例): 1、打开IIS,打开“网站 --> 默认网站”,右键点击“属性”,点击“主目录”,勾选“目录浏览”选项,如下图所示: 2、进入文件夹C:\Inetpub\wwwroot,...阅读全文

博文 2014-10-04 19:26:38 MikeZhang

定义 http 接口,以及 struct tag 的一点点经验,想法,求大神教育,菜鸟一同探讨

本人菜鸟,师父让我定义 与前台的 http 接口,我就做了,当然过程中被喷惨了。写写我最后的方法,以及我为什么这么写,欢迎大家探讨。 前提,所有接口 POST,json 方式 1.接口最后定义方式,基本上是大模块上是按照功能划分的,小模块上按照界面上需要的数据定义的。其实对后台来说,最好的方法就是不看界面,提供基本接口,让前台去组合。但是前台说 考虑到流量,手机耗电问题,所以最后无条件的 前台需要什么给什么,不需要的后台帮忙处理掉。这样做的坏处就是,后台代码写的比较乱,因为每个前台需要的界面都要单独一个结构体,命名上也比较难命名(因为后台自己的数据结构跟前台需要的差不多,只是少了个别字段),我现在也不知道好的接口到底应该怎么样定义。求大神狠狠教育一下我。 2.因为是 json,...阅读全文

go语言beego框架 orm实现insertOrUpdate功能

在beego1.6.1版本orm中并未提供insertOrUpdate,但是自己做项目时遇到了这个需求,顾写了一个自己的实现,暂只支持mysql与postgres。实现原理是数据自带可实现insertorupdate的功能语句。 mysql:-ON DUPLICATE KEY UPDATE postgres : -ON CONFLICT DO UPDATE SET 然后去orm实现中自己拼装sql语句 好了,亮代码: func (d *dbBase) InsertOrUpdate(q dbQuerier, mi *modelInfo,ind reflect.Value, tz *time.Location, dn string, args …string) (int64, error) { ...阅读全文

博文 2016-09-07 04:00:22 fudali133

go语言beego框架 orm实现insertOrUpdate功能

在beego1.6.1版本orm中并未提供insertOrUpdate,但是自己做项目时遇到了这个需求,顾写了一个自己的实现,暂只支持mysql与postgres。实现原理是数据自带可实现insertorupdate的功能语句。 mysql:-ON DUPLICATE KEY UPDATE postgres : -ON CONFLICT DO UPDATE SET 然后去orm实现中自己拼装sql语句 好了,亮代码: func (d *dbBase) InsertOrUpdate(q dbQuerier, mi *modelInfo,ind reflect.Value, tz *time.Location, dn string, args …string) (int64, error) { ...阅读全文

博文 2016-07-17 15:00:01 fudali133

OS X 10.11搭建go语言1.5.1开发环境

1、安装Golang的SDKhttp://golang.org ,下载最新的安装包,之后双击安装即可。某此同学国内打不开的。。。我只想说,学谷歌的东西,自己想个好点办法吧。。。你懂的 安装完成之后,打开终端,输入go、或者go version(查看安装版本)出现如下信息即表示安装成功: $ go version go version go1.5.1 darwin/amd64 2、配置环境变量安装完sdk之后接下来便是配置环境变量了,打开终端输入cd ~ 进入用户主目录,之后输入ls -all命令查看是否存在.bash_profile 文件,存在既使用vim .bash_profile打开并编辑该文件。根据自己实际情况,内容如下: export GOPATH=/Users/lvtao/Docu...阅读全文

Go 语言开发环境设置(Fedora x64)

如果以工作需要来看,Go语言对我一无是处——我不需要写(“不会写”的另一种说法)操作系统级的代码。但是这个编程语言的Newbie看起来确实很适合开发国际象棋引擎和围棋引擎——既有接近C的速度,又有很好的并发支持,还包括了安全的数据容器,因此,我还是忍不住想学点新把戏了。 安装Go的过程其实异常简单。可以参考http://golang.org/doc/install.html,不要被页面的篇幅吓住,其实上面一大半在解释几个关键的环境变量,一小半在谈mercurial,最后实际安装的语句……只有一句!下面就谈如何在Fedora的64位版本下安装Go。 Go语言的推荐开发平台当然是64位的Linux,在官方文档里的方法针对的是ubuntu,当然,Fedora下的安装是大同小异。 首先在.bash_...阅读全文

博文 2014-10-12 22:00:00 hiarcs

Mac OSX 安装Go语言环境

go语言运行包下载地址:http://code.google.com/p/go/downloads/list 我这里安装的是 go version go1.4.1 darwin/amd64 下载安装就可以了 然后就是配置环境变量 GOROOT安装好就是已经配置好了的,我们只需要配置GOPATH,我是在当前用户桌面创建Go目录,里面分别是 src,bin,pkg三个目录 查看当前用户主目录是否有.bash_profile文件,没有则创建输入 export GOPATH=${HOME}/Desktop/Go export PATH=${PATH}:${GOPATH}/bin 保存,source ~/.bash_profile不报错就可以了 现在环境已经搭建好...阅读全文

博文 2015-02-02 03:00:01 qifeng1991

26.蛤蟆笔记go语言——beedb库使用

26.蛤蟆笔记go语言——beedb库使用 beedb是一个Go进行ORM操作的库,它采用了Go style方式对数据库进行操作,实现了struct到数据表记录的映射。是一个十分轻量级的Go ORM框架,本意降低复杂的ORM学习曲线,尽可能在ORM的运行效率和功能之间寻求一个平衡. 安装 支持go get方式安装,是完全按照Go Style的方式来实现的。 命令行执行:go get github.com/astaxie/beedb 需要import相应的数据库驱动包、database/sql标准接口包以及beedb包 import ( "database/sql" "github.com/astaxie/beedb" _"github.com/ziutek/mymysql/godrv" ) ...阅读全文

博文 2016-06-29 00:00:00 notbaron

[心凉半截]怎么到处都是陷阱?golang,我总觉得好危险。

``` package main import ( "fmt" "sort" ) type Score struct { score int } func main() { slc := []Score{Score{10}, Score{9}, Score{7}, Score{6}, Score{5}, Score{4}, Score{3}, Score{2}, Score{1}, Score{0}} temp := append(slc, Score{12}) fmt.Println("temp 1:", temp) fmt.Println("slc 1:", slc) // 输出: //temp 1: [{10} {9}...阅读全文

惨痛教训 beego路由失败

今天上午 + 中午折腾快3个小时 路由模块疯狂失败,怎么改都是404,在即将绝望之际,群主大人帮忙查找出问题所在:import导包路径错误!!!! 之所以产生这个错误,是因为我个人习惯,给项目做备份直接copy,然后取新名称,结果就是导包失败,而ide不报错。。。。。真怀念eclipse和Idea啊 我们的golang群是197713362,欢迎做golang的朋友加入,大家还是很热心...阅读全文

博文 2015-06-17 20:12:40 u012210379

《Go语言编程》【3.6 完整示例】代码错误和文件目录结构

1. 音乐结构体命名错误,不是Music,而是MusicEntry,如下: 2. 包名错误,不是library,而是mlib: 3. manager.go代码Remove函数删除中间元素有错,index-1应当改成index: 4. m0变量初始化错误,"Celion Dion", 为多余,MP3应当加上双引号: 5. manager_test.go代码错误,无Genre: 6. manager_test.go代码错误,err多余: 7. 少了wav.go代码,可以直接拷贝mp3.go全部替换MP3关键字即可 8. 主程序mplayer.go代码ctrl和signal变量声明和调用多余: 9. manager.go和主程序mplayer.go,Go语言中午elseif关键字,应当是else ...阅读全文

博文 2014-12-21 08:00:01 董松

golang recover panic 流程控制的可达与不可达

--------------------------流程控制可达----------------------------- package main import "fmt" func explode() { // Cause a panic. panic("WRONG") } func throwPanic(f func()) { defer func() { if err := recover(); err != nil { // Handle our error. fmt.Println("FIX") fmt.Println("ERR", err) } }() f() fmt.Println(" finish") } func main() { throwPanic(explode) ...阅读全文

博文 2015-05-04 09:00:02 rojas

golang中os/user包用法

os/user包允许用户账号通过用户名或者用户id查找用户 type UnknownUserError type UnknownUserError string func (e UnknownUserError) Error() string //当通过lookup无法查找到某个用户时,便会返回该错误.type UnknownUserIdError type UnknownUserIdError int func (e UnknownUserIdError) Error() string ////当通过lookup无法查找到某个用户id时,便会返回该错误. type User type User struct { Uid string // user id Gid string // pri...阅读全文

博文 2015-06-18 17:05:37 chenbaoke

javaer to go之简单的ORM封装

身为一个做企业级开发的javaer,习惯使用hibernate、ibatis等ORM框架来操作数据库。虽然也发现golang也有ORM框架,像beego ORM等。 为了熟悉golang的一些特性,我还是觉得自己封装一个ORM。 1、struct与interface简单说明 golang是一门面向过程的语言,所以它本身是没有像java那样的类与对象的概念。但golang中提供了struct与interface。甚至通过struct与interface结合,可以模拟类与对象的各种方式。 什么是interface,golang的interface与java的interface是不是一回事呢? 简单的说,interface是一组method的组合,我们通过interface来定义对象的一组行为。 ...阅读全文

博文 2016-04-13 15:00:01 p_3er

关于select的无法退出的问题

想实现一个主程序在监听多个channel的练习。如下,我理解只输出一次就会退出,但是实际上,似乎跑了个死循环,问题出在哪里? ```golang package main import ( "fmt" "time" ) func put(c chan<- string, msg string) { time.Sleep(time.Second * 1) //for i := 1; i < 10; i++ { c <- msg //} close(c) } func main() { c1 := make(chan strin...阅读全文

文件变更监听通知系统fileboy

fileboy,文件变更监听通知系统,使用 GO 编写。 适用于 Hot Reload (典型的如开发go项目,无需每次手动执行 go build;又比如前端 node 打包) 或者 系统监控的场景。 go version >=1.10 [正式版 v1.0](https://github.com/dengsgo/fileboy/releases) 直接下载已经编译好的对应平台二进制文件,加入系统 Path 中即可。 clone 该项目,进入主目录,运行命令: fileboy 的正常运行依赖于 `filegirl.yaml` 配置,所以首次在项目中使用需要初始化 `filegirl.yaml`。 进入你想要 hot reload 的项目主目录下; 运行 `fileboy ...阅读全文

【滴滴出行社招】服务端研发工程师

【在线业务研发工程师(PHP/Golang)】 我们需要一个这要的你: 有志于参与一场出行行业的变革; 对于大流量高并发业务场景的技术挑战心潮澎湃。 用你的代码影响成千上万人: 负责快车、专车、拼车、优步、优享、出租车等核心业务的服务端研发工作; 负责接送机、站点拼车、跨城、小巴等垂直出行场景的服务建设和通勤、休娱、商旅等新出行场景孵化。 【中台建设&中间件研发工程师/架构师】 众里寻你千百度: 每一次将复杂世界变得简单都让你心花怒放; 每一次你的系统都能云淡风轻跨越一座座流量洪峰,而你依然心若止水。 你来协助我们提升生产力: 负责打磨现有产品业务流程,深入了解司乘两端业务,对出行场景进行抽象优化; 负责出行中台&中间件架构设计和优化工作,提...阅读全文

ubuntu /elementary os下vscode 配置go开发环境

安装go 配置环境变量 设置权限 设置GOPATH 安装vscode go 安装delve 安装go 从下载地址选择符合自己系统的安装包(.tar.gz文件),我的是elemenray os 32位,我选择的是go1.6.linux-386.tar.gz 下载后,cd到下载目录,利用命令 sudo tar -xzf go1.6.linux-386.tar.gz -C /usr/local 网上的方法大部分是解压到/usr/local/ ,但是我自己在后面vscode安装go插件时经常遇到权限的错误,导致插件无法安装,所以建议安装到用户主目录下面 sudo tar -xzf go1.6.linux-386.tar.gz -C /home/kingeasternsun 配置环境变量 配置Ubun...阅读全文

博文 2016-11-12 00:00:00 KingEasternSun

golang学习计划

1.使用材料: 官方文档 https://golang.org/ref/spec 网络教程 http://www.runoob.com/go/go-tutorial.html 2.学习计划 第一步就是学习网络教程,过程中有不会的就查询官方文档。 3.Notice 不要忽视实践 不要忘记复习,可以使用xmind的画流程图帮助梳理复习 最好可以有一个schedule来规定学习时...阅读全文

博文 2016-06-17 20:00:12 li_amy

beego orm操蛋问题:操作都需要主键

查看bee generate appcode自动生成的代码,会发现orm操作都是以主键为依据的。 如果我不想根据主键怎么操作?用 ORM.Raw(cmd).Exec()吧,cmd=[你的mysql语句] func Del()(err error){ o := orm.NewOrm() rawSetter,err := o.Raw("DELETE FROM nginx_cfg WHERE host='aaa' AND port='22'").Exec(); num, err := rawSetter.RowsAffected() logs.Info("[%v] recodes deleted!", num) return ...阅读全文

博文 2018-01-12 00:30:01 dannyyao