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

Golang Gin实践 连载十七 用 Nginx 部署 Go 应用

Golang Gin实践 连载十七 用 Nginx 部署 Go 应用 原文地址:Golang Gin实践 连载十七 用 Nginx 部署 Go 应用 前言 如果已经看过前面 “十六部连载,两部番外”,相信您的能力已经有所提升 那么,现在今天来说说简单部署后端服务的事儿 ???? 做什么 在本章节,我们将简单介绍 Nginx 以及使用 Nginx 来完成对 go-gin-example 的部署,会实现反向代理和简单负载均衡的功能 Nginx 是什么 Nginx 是一个 Web Server,可以用作反向代理、负载均衡、邮件代理、TCP / UDP、HTTP 服务器等等,它拥有很多吸引人的特性,例如: 以较低的内存占用率处理 10,000 多个并发连接(每10k非活动HTTP保持活动连接约2.5...阅读全文

Go 解决"no buildable Go source file in"问题

【问题】 我有一个文件夹,文件夹名字叫 12 ,并且我创建了一个Go源文件 12_test.go,代码如下: package main import "fmt" func main() { fmt.Println("Hello world") } 运行下面命令时出了错: go build 12_test.go "go build command-line-arguments: no buildable Go source files in D:\12" 【解决】 _test后缀在Go语言中有着特殊含义,是用来给Go程序做测试的,build工具会忽略它们,它们会运行 go test。从文件名中删除_test,或者重命名就可以解决这个问题...阅读全文

博文 2016-12-15 13:00:02 吃一堑消化不良

golang使用yaml格式解析构建配置文件

还是那个golang监控agent那些事情,现在功能差不多了,唯独缺少信号处理及daemon服务化。 程序写的差不多了,但是这配置文件咋整? 难道把这些常亮要写在.go文件里面? 我对golang还没能理解到无缝reload的模式… 如果是写在配置文件就很简单了,有个goroutine notify监控配置文件或者是以接受信号的方式重新初始化任务。 该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新http://xiaorui.cc/?p=3012 现在主流的配置文件格式有这么几种,xml、yaml、config… xml就算了,太挫了,太土, 太繁琐… config 就是mysql,apache my.cnf的那种格式,这个格式适合功能分层,不适合写同级的配置端....阅读全文

博文 2017-04-04 19:31:14 rfyiamcool

golang中使用mongodb的操作类以及如何封装

mgo简介 mongodb官方没有关于go的mongodb的驱动,因此只能使用第三方驱动,mgo就是使用最多的一种。mgo(音mango)是MongoDB的Go语言驱动,它用基于Go语法的简单API实现了丰富的特性,并经过良好测试。 官网:http://labix.org/mgo 文档:http://godoc.org/gopkg.in/mgo.v2 安装与使用 安装 go get gopkg.in/mgo.v2 go中使用 package main import ( "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" ) type Person struct { Id bson.ObjectId `bson:"_id"` Name string `bson:"...阅读全文

博文 2015-07-30 03:00:00 spnt

GO语言基础环境搭建以及HelloWorld

Go语言(golang)是Google推出的一种全新的编程语言。关于其详细介绍请自行百度,直接介绍基础开发环境配置。 1、安装GO安装包。 官方下载地址应该是 https://code.google.com/p/go/downloads/list 不过如果你在被墙了的话应该是无法访问该地址,这里是用的版本是go1.3.windows-386.msi,可直接百度文件名下载安装即可。 2、配置环境变量。 这里同Java环境变量配置很相似,配置项稍多。具体如下: 新建 变量名:GOBIN 变量值 :D:\Program Files (x86)\Go\bin 新建 变量名:GOARCH 变量值:386 新建 变量名:GOOS 变量值:windows 新建 变量名: GOROOT 变量值:c:\go ...阅读全文

博文 2015-05-27 16:00:00 PrinceTerence

golang指针与C指针的异同

总结一下golang中的指针与C语言的指针的用法。 总体一致: C的代码: ? 1 2 3 4 int *number; number = (int *) malloc(sizeof(int)); *number = 3; printf("%d\n", *number); golang的代码: ? 1 2 3 4 var pointer *int; pointer = new(int); *pointer = 3; fmt.Println(*pointer); 多重指针情况: C的代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 int **outer; int *inter; inter = (int *) malloc(sizeof(int)); *inter = ...阅读全文

博文 2014-10-25 10:00:01 zhjih123

一、Go语言的变量和常量

《Go Web 编程》《Go 语言编程》读书笔记 。 1.变量 变量是几乎所有编程语言中最基本的组成元素。从根本上说,变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。 1.1 变量声明 对于纯粹的变量声明,Go语言引入关键字var,而类型信息放在变量名之后,形如: var variableName type var vname1, vname2, vname3 type 示例: var v1 int var v2 string var v3 [10]int // 数组 var v4 []int // 数组切片 var v5 struct { f int } var v6 *int // 指针 var v7 map...阅读全文

博文 2015-11-10 10:00:01 chyljy

Golang文件名命名规则

1、平台区分 文件名_平台。 例: file_windows.go, file_unix.go 可选为:windows, unix, posix, plan9, darwin, bsd, linux, freebsd, nacl, netbsd, openbsd, solaris, dragonfly, bsd, notbsd, android,stubs 2、测试单元 文件名_test.go或者 文件名_平台_test.go。 例: path_test.go, path_windows_test.go 3、版本区分(猜测) 文件名_版本号等。 例:trap_windows_1.4.go 4、CPU类型区分, 汇编用的多 文件名_(平台:可选)_CPU类型. 例:vdso_linux_amd...阅读全文

博文 2016-09-22 07:00:01 zyjying520

Go语言去除文件后缀

package main import ( "fmt" "path" "strings" ) func main() { fullFilename := "/Users/itfanr/Documents/test.txt" fmt.Println("fullFilename =", fullFilename) var filenameWithSuffix string filenameWithSuffix = path.Base(fullFilename) fmt.Println("filenameWithSuffix =", filenameWithSuffix) var fileSuffix string fileSuffix = path.Ext(filenameWithSuffix)...阅读全文

博文 2015-01-31 23:00:11 itfanr

golang操作gorm基本

前言 对于golang中使用gorm操作mysql,可能其他的操作都是固定的,唯一麻烦的就是字段的映射。 gorm允许自己定义一个表的结构映射,但是,golang中,首字母大写来表示public或者private,而gorm在做映射的时候,大写的转化是不一样的。这里就做一下区分。 1.直接使用表的机构映射 比如你用find之类不需要写表名称,直接用结构获取的情况下,struct的机构和数据库中的结构要一致,不一样的用gorm:"column:nameSpace",这个来说明,column里面就是你想要映射的名称。 2.定义自己的结构 这么定义的话,就不要求完全一样。 这里又分两种 一,你如果没有用row,直接一条语句末尾加Scan(&struct),这么来接受的,需要字段名称对应,也可以这个...阅读全文

博文 2019-09-29 14:33:10 aside section ._1OhGeD

纯golang im即时通讯系统(支持分布式)

简介 纯go实现的im即时通讯系统,各层可单独部署,之间通过rpc通讯,支持集群,学习于goim, 总分三层,github地址 https://github.com/Terry-Ye/im comet(用户连接层),可以直接部署多个节点,每个节点保证serverId 唯一,在配置文件comet.toml logic(业务逻辑层),无状态,各层通过rpc通讯,容易扩展,支持http接口来接收消息 job(任务推送层)通过redsi 订阅发布功能进行推送到comet层。 时序图 以下Comet 层,Logic 层,Job层都可以灵活扩展机器 特性 分布式,可拓扑的架构 支持单个,房间推送 心跳支持(gorilla/websocket内置) 基于redis 做消息推送 轻量级 持续迭代... 部署...阅读全文

博文 2018-12-19 09:34:47 大呜

Golang 项目目录结构组织

其实golang的工程管理还是挺简单的,完全使用目录结构还有package名来推导工程结构和构建顺序。 当然,首先要说的是环境变量GOPATH,项目构建全靠它。这么说吧,想要构建一个项目,就要将这个项目添加到GOPATH中,多个项目用";"分隔。 Golang项目目录下一般有三个子目录: src存放源代码 pkg编译后生成的文件 bin编译后生成的可执行文件 我们重点要关注的其实就是src文件夹中的目录结构。 举个例子比啥都强,目录结构如下: |-- |-- |-- |--al.go |-- |--a2.go |-- |--b1.go |--b2.go |-- |--c.go |-- |-- 各文件代码: a1.g...阅读全文

博文 2019-04-28 01:34:41 藍墨雪姫

Go语言(log4go介绍)

今天来介绍一个Go语言中常用的日志第三方包,即log4go。在C++中,有log4cpp,而在Java中,有log4j。 好了,废话不多说,现在就来介绍log4go的使用。在log4go在github上的链接如下 链接:https://github.com/skoo87/log4go 具体用法可以参考examples文件夹,而且配置文件采用JSON的格式。一个典型的例子如下 log.json: { "LogLevel" : "info", "FileWriter" : { "LogPath" : "log-%Y%M%D.log", "On": true }, "ConsoleWriter" : { "On" : true } } main.go: package main import ( ...阅读全文

博文 2015-06-17 23:01:52 ACHelloWorld

GO语言为结构体排序

package main import ( "fmt" "io/ioutil" "sort" "time" ) type info struct { Name string Time time.Time } type newlist []*info func main() { l, e := getFilelist("./") if e != nil { fmt.Println(e) } sort.Sort(newlist(l)) //调用标准库的sort.Sort必须要先实现Len(),Less(),Swap() 三个方法. for _, v := range l { fmt.Println("文件名:", v.Name, "修改时间:", v.Time.Unix()) } } func ...阅读全文

博文 2015-11-07 12:00:05 fyxichen

go语言:log4go

go语言中日志框架log4go用法 [plain] view plaincopyprint? package main import ( l4g "github.com/alecthomas/log4go" ) func main() { l4g.AddFilter("stdout", l4g.DEBUG, l4g.NewConsoleLogWriter()) //输出到控制台,级别为DEBUG l4g.AddFilter("file", l4g.DEBUG, l4g.NewFileLogWriter("test.log", false)) //输出到文件,级别为DEBUG,文件名为test.log,每次追加该原文件 //l4g.LoadConfiguration("log.xml")//使...阅读全文

博文 2015-06-17 23:01:52 LvanNeo

GO编译环境搭建(基于SublimeText3)

1、我的机器是32位的win,可以去下面连接下载:http://download.csdn.net/detail/cumtwys/7695131 如果需要其他版本请到google官网下载(貌似被封了):http://code.google.com/p/go/downloads/list?q=OpSys-Windows+Type%3DInstaller 2、配置系统环境变量 新建变量名:GOBIN 变量值:C:\go\bin 新建变量名:GOARCH 变量值:386 新建变量名:GOOS 变量值:windows 新建变量名:GOROOT 变量值:C:\go 编辑PATH变量,在最后添加 ;%GOBIN% 3、配置Sublime Text 按住【Ctrl+shift+p】,在弹出框内输入【ins...阅读全文

博文 2015-02-22 01:00:01 cumtwys

Go实战--golang中文件以及文件夹路径相关操作

生命不止,继续 go go go!!! 之前介绍过golang的标准库:path/filepath, os Go语言学习之path/filepath包(the way to go) Go语言学习之os包中文件相关的操作(The way to go) 今天就跟大家分享几个关于文件以及文件夹的相关操作。 获取目录中所有文件 使用包: io/ioutil 使用方法: ioutil.ReadDir 读取目录 dirmane 中的所有目录和文件(不包括子目录) 返回读取到的文件的信息列表和读取过程中遇到的任何错误 返回的文件列表是经过排序的 FileInfo type FileInfo interface { Name() string // base name of the file Size() ...阅读全文

博文 2017-09-20 04:31:03 wangshubo1989

在Go函数中调用c动态库

在很多场景下,在Go的程序中需要调用c函数或者是用c编写的库(底层驱动,算法等,不想用Go语言再去造一遍轮子,复用现有的c库)。那么该如何调用呢?Go可是更好的C语言啊,当然提供了和c语言交互的功能,称为Cgo!Cgo封装了#cgo伪c文法,参数CFLAGS用来传入编译选项,LDFLAGS来传入链接选项。这个用来调用非c标准的第三方c库。 1)先从最简单的写起吧,Go代码直接调用c函数,下面的示例中在代码注释块调用了标准的c库,并写了一个c函数(本例只是简单打印了一句话,在该注释块中可以写任意合法的c代码),在Go代码部分直接调用该c函数hi() package main import "fmt" /* #include void hi() { printf("hello...阅读全文

博文 2017-07-01 07:07:56 Mark_Zhang

在Go语言中记录log:seelog包

前两周调bug调的吐血,虽然解决了但是还是挺浪费时间的。跟同事聊了聊,觉得我们现在项目中的日志记录太少了,导致出了问题不知道怎么下手,还得自己改代码记录日志,然后排查问题。这样如果将来还有bug的话还得这么调,很麻烦,让我深入看一下go语言中如何记录日志(好吧我最近就跟日志耗上了)。 根据python的经验和目前项目中的要求,我对日志的要求有两个: 一是定义日志级别,可以记录debug/warning/error之类的不同级别的日志,这样的话,在通常正常运行的时候,就只需要记录一下运行状态,而报错需要调试的时候,可以显示的日志多一些; 二是定义日志格式,想要记录什么内容,比如时间、级别、位置、日志信息等等。于是,简单的看了一下Go自带的log模块,就知道根本达不到我的要求。 在网上查了一下现...阅读全文

博文 2015-12-18 03:00:00 anpengapple

golang通过http端口访问hadoop

无聊尝试一下golang连接hdfs, 写了个hello world golang包地址 https://github.com/vladimirvivien/gowfs 安装 go get github.com/vladimirvivien/gowfs 写程序之前需要修改hadoop的两个配置文件 分别是 hsdfs-site.xml 里的 dfs.webhdfs.enabled dfs.webhdfs.enabled true core-site.xml 里的 hadoop.http.staticuser.user hadoop.http.staticus...阅读全文

博文 2014-10-04 19:27:18 dclink

supervisor运行golang守护进程

最近在鼓捣golang守护进程的实现,无意发现了supervisor这个有意思的东西。supervisor是一个unix的系统进程管理软件,可以用它来管理apache、nginx等服务,若服务挂了可以让它们自动重启。当然也可以用来实现golang的守护进程,下面描述下具体实现。 安装supervisor 基于centos 6.4。 supervisor使用python编写的,可以用easy_install安装。centos上默认有python的运行环境,安装起来就非常简单了。 $ sudo yum install python-setuptools $ sudo easy_install supervisor 如果没有看到什么报错,那么就安装成功了,可以使用echo_supervisord_...阅读全文

博文 2015-07-17 03:00:00 cnsanshao

golang beego接受post json字符串解析返回JSON数据

在 API 的开发中,我们经常会用到 JSON 或 XML 来作为数据交互的格式,如何在 beego 中获取 Request Body 里的 JSON 或 XML 的数据呢? 在配置文件里设置 copyrequestbody = true在 Controller 中json 用来解析JSON的包ob定义的struct func (this *ObjectController) Post() { var ob models.Object json.Unmarshal(this.Ctx.Input.RequestBody, &ob) objectid := models.AddOne(ob) this.Data["json"] = "{\"ObjectId\":\"" + objectid + ...阅读全文

博文 2016-11-22 14:00:02 shachao888

golang中json.Number妙用

最近跟某斯调试一个API接口,接口返回数据是json格式 ,按文档描述是一个整型数据,于是定义如下 type Data struct { Api int `json:"api"` } 在入参相同的情况下,第一次调用,得到的结果是: {"api":1} 然而第二次调用,得到结果却是: {"api":"1"} 与对方开发人员沟通后发现这是一个bug,由于流程问题,没办法立即修改上线,想想还是我做兼容比较好,效果是既能解析于{"api":1},也能够解析{"api":"1"},于是我想到了json.Number,Number类型定义如下 The representation of numbers is similar to that used in most programming languag...阅读全文

博文 2018-07-17 23:34:46 wu_sphinx

go的json输出

// code_030_JSON_key_value project main.go package main import ( "encoding/json" "fmt" ) //Go语言内建对JSON的支持。 //使用Go语言内置的encoding/json 标准库,开发者可以轻松使用Go程序生成和解析JSON格式的数据 type IT struct { Company string Subjects []string IsOk bool Price float64 } type University struct { //ID int //所学专业的ID Name string `json:"-"` //大学名称 //Department string //系 //Major stri...阅读全文

博文 2018-10-07 00:35:10 ck_god

Golang练手小项目系列

本系列整理了10个工作量和难度适中的Golang小项目,适合已经掌握Go语法的工程师进一步熟练语法和常用库的用法。golang练手小项目系列(1)-位向量golang练手小项目系列(2)-并发爬虫golang练手小项目系列(3)-并发读取文件夹信息golang练手小项目系列(4)-网络聊天室golang练手小项目系列(5)-并发无阻塞缓...阅读全文

博文 2019-06-29 01:32:41 李说的对

Go编程——变量、函数导出与首字母大写

Go编程——变量、函数导出与首字母大写 标识符可被 导出 以允许从另一个包访问。 同时符合以下条件即为已导出标识 1、标识符名的第一个字符为Unicode大写字母(Unicode类别“Lu”); 2、该标识符在包块中已声明或为字段名或方法名。 以程序导入gotest/even包为例 package main import ( "even" "fmt" ) func main() { i:=even.I fmt.Printf("Is %d even? %v\n", i, even.Even(i)) } package even var I int = 123 func Even(i int) bool { return i%2==0 } func odd(i int) bool { retur...阅读全文

博文 2015-06-18 09:02:12 typ2004

Golang判断文件是否存在及递归创建文件夹

一、判断文件或文件夹是否存在golang 判断文件或者文件夹是否存在可以通过os.stat() 方法和os.IsExist() 方法来判断: 1234567891011121314func isExist(path string)(bool){ _, err := os.Stat(path) if err != nil{ if os.IsExist(err){ return true } if os.IsNotExist(err){ return false } fmt.Println(err) return false } return true} 二、递归创建文件夹递归文件夹用到os.MkdirAll() 方法: 1func MkdirAll(path string, perm File...阅读全文

博文 2018-05-17 09:48:33 马谦的博客

os.Args[0] 的获取的值的问题

默认情况下 os.Args[0]应该返回可执行文件的路径 ``` go package main import ( "fmt" "os" ) func main() { fmt.Println("test the os package") fmt.Println("Args len", len(os.Args)) for i, arg := range os.Args { fmt.Println("arg", i) fmt.Println("arg", arg) } fileInfo, err := os.Stat("E:\\go\\bin\\studygolang.exe") if err != nil { f...阅读全文

golang版的crontab

Linux下cron可以让系统在指定的时间去执行某个指定的工作,crontab则用来管理cron机制。在服务器方面,就可以利用cron进行周期性的执行某些特定的工作,比如定期数据库备份,定期压缩服务器端的数据等等。 现在用golang做服务器的不断增多,服务器端需要周期性的备份或压缩或删除数据是常态。本周就学习了golang版的crontab,感觉该功能很是方便。 1 package main 2 3 import ( 4 "fmt" 5 "github.com/robfig/cron" 6 ) 7 8 func main() { 9 spec := "0, 30, 2, *, *, *" // 每天凌晨2:30 10 c := cron.New() 11 c.AddFunc(spec, c...阅读全文

博文 2015-07-11 03:00:01 hezhixiong

Go语言(遍历文件夹)

今天来讲一个Go语言操作文件的问题,即如何遍历一个文件夹下的所有文件。 代码如下 package main import ( "path/filepath" "os" "fmt" "flag" ) func getFilelist(path string) { err := filepath.Walk(path, func(path string, f os.FileInfo, err error) error { if f == nil { return err } if f.IsDir() { return nil } println(path) return nil }) if err != nil { fmt.Printf("filepath.Walk() returned %v\n...阅读全文

博文 2015-06-17 23:00:30 ACHelloWorld

Golang实现断点续传

https://github.com/artificerpi/oget HTTP Range 请求 HTTP Range请求允许服务器向客户端发送HTTP消息体的一部分数据。Partial Requests在使用比较大的网络媒体文件或者在下载文件时提供暂停和恢复功能时很有用。 这也是下载时实现HTTP断点续传的一个关键。 HTTP 206 (Partial Content) 如果服务器能返回HTTP 206请求,我们就知道它能够支持Range request. # curl -I https://www.baidu.com/ -H "Range: bytes=0-" HTTP/1.1 206 Partial Content Cache-Control: private, no-cache, ...阅读全文

博文 2017-12-26 04:30:01 7explore-share

golang 定时器

上网查了下相关资料,基本上都介绍的是github.com\robfig\cron这个包来执行定时任务,试了下确实可以执行。但是此包下没有删 除任务的方法,只有暂停的方法(Stop),若要停止之前的任务只执行新定义的任务,除非服务器重启再定义新任务。后来又参考了一下其他人的建议,采用了 github.com\jakecoffman\cron这个包。后者是在前者的基础上做了一定的修改,给每个任务添加的一个新属性Name,然后新添加 一个remove(name)方法,用来删除指定名字的任务,经测试使用后可正常删除任务,只不过之前的计划任务名得新建一个全局变量来存储。 以下先简单介绍下定义时间集合的信息: 字段名 是否必须 允许的值 允许的特定字符 秒(Seconds) 是 0-59 * / , -...阅读全文

博文 2016-08-12 12:00:00 zhangym

Go语言下与MongoDB通信-使用mgo

mgo简介 mgo(音mango)是MongoDB的Go语言驱动,它用基于Go语法的简单API实现了丰富的特性,并经过良好测试。 官方网站:http://labix.org/mgo。 golang.tc(golangtc.com)网站的数据存储就是是用的MongoDB+mgo。近一年使用下来表现良好。 API文档 下面是mgo、mgo/bson、mgo/txn的在线文档。 •mgo GoDoc GoWalker •mgo/bson GoDoc GoWalker •mgo/txn GoDoc GoWalker 安装 安装mgo之前请先安装Golang和MongoDB,安装过程不再赘述。 安装bzr版本工具(mgo使用Bazaar...阅读全文

EMQ百万级MQTT消息服务(TLS Docker Golang)

附上: 喵了个咪的博客:w-blog.cn EMQ官方地址:http://emqtt.com/ EMQ中文文档:http://emqtt.com/docs/v2/guide.html 1.TLS证书验证 为了保障安全.我们常常会使用HTTPS来保障请求不被篡改,作为MQTT使用TLS加密的方式来保障传输安全 EMQ默认使用的TLS加密的端口是8883端口,默认证书在EMQ目录下etc/certs: 对应的配置文件在emq.conf中,可以修改你的端口和配置文件路径 listener.ssl.external = 8883 listener.ssl.external.keyfile = etc/certs/key.pem listener.ssl.external.certfile = etc...阅读全文

博文 2018-04-24 19:33:05 喵了_个咪

自己封装的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

Golang中JSON解析结构体

一、StructTag介绍StructTag是go语言结构体中的一个标记字段,放在字段声明的后面,一般只有特定情况下会用到,如json的转化。 使用的时候只要把标记的字段用两个包起来即可,标签内的语法形式通常为key:”value”` ,多个标记用空格隔开。 1234type tagTest struct { tagA string `TagA` tagB int `TagB`} 二、Struct转Json要想把struct转化成json,只要把结构体内的字段名设置成导出状态,也就是把首字母大写就行了,默认情况下,转化后的json中的key值和结构体中的字段名是一样的。 1234567891011121314151617181920212223package mainimport ( "fm...阅读全文

博文 2018-05-17 09:27:59 马谦的博客

golang中如何获得函数的函数名

如何获取golang中的函数的名字, 这里需要用到反射. 可以看如下代码. 重点使用 runtime.FuncForPC 这个函数获取函数名. 使用strings.FieldsFunc 对得到的带 路径名和包名的 函数名进行必要的处理. package main import ( "fmt" "reflect" "runtime" "strings" // "seps" "runtime/debug" ) func foo() { } func GetFunctionName(i interface{}, seps ...rune) string { // 获取函数名称 fn := runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name() ...阅读全文

博文 2018-12-20 17:34:46 个00个

golang的win10安装

golang的安装: windows10 下载安装包: 国内的(不用翻墙): https://studygolang.com/ 官网(需翻墙): https://golang.org/ 安装: 双击安装, 一步步安装完成即可 配置环境变量 打开设置 Snipaste_2018-11-18_16-29-12.png 搜索框输入: 环境变量 --> 选择系统环境变量 Snipaste_2018-11-18_16-29-57.png 点击: 环境变量 Snipaste_2018-11-18_16-30-12.png 增加GOROOT: 新建 --> 变量名为: GOROOT(必须大写),变量值: 你安装时的go安装路径(我这里是用的c盘) Snipaste_2018-11-19_01-02-18....阅读全文

博文 2018-11-19 02:34:38 陈卧虫

go语言JSON处理

https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/07.2.md JSON(Javascript Object Notation)是一种轻量级的数据交换语言,以文字为基础,具有自我描述性且易于让人阅读。尽管JSON是Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。JSON由于比XML更小、更快,更易解析,以及浏览器的内建快速解析支持,使得其更适用于网络数据传输领域。目前我们看到很多的开放平台,基本上都是采用了JSON作为他们的数据交互的接口。既然JSON在Web开...阅读全文

博文 2016-04-22 15:00:01 liukuan73

Golang自定义包总结

近日在学习Golang的自定义包的创建方式,产生了一些经验,因此以这篇文章作为记录。 我们通过import语句将自定义包加入到我们项目main函数中,import语句后面的参数应该是文件夹的名称,和自定义包的package的名称或者自定义包里面的文件名称没有关系,例如文件的结构目录如下: main.go的源码: package main import "fmt" import "foo" func main() { bar.Abc() fmt.Print("This is main\n") } foo/test.go的源码: package bar import "fmt" func Abc() { fmt.Print("This is test print\n") } 上面的代码是顺利通过...阅读全文

liteIDE 快捷键改装

LiteIDE改装 最近一直都在使用liteIDE做开发。公司的项目很紧张,但是在这个周末。还是偷偷的对liteIDE小不爽的地方进行了一些小的改造。 IDE上的run按钮就是运行当前的go文件。 首先我们项目运行只是运行统一或者少数的入口点每次点开固定的文档才能run真的是够了。另外一个主要的原因在于liteIDE没有project管理支持。 而且这个IDE貌似没有出很长时间一般的RCP平台都是有插件开发的。但是这没有插件开发(貌似是有。而且是用python写的)但是,没找到文档(截至 2015年1月19日)也是醉了。 关键入口点还是我在google Code上找到的一个文档。 在配置中的LiteBuild里面有一个gosrc.xml 这个配置文件能修改buttion调用的命令。好吧就只能...阅读全文

博文 2015-03-07 21:32:39 jianyingLi

nginx 反向代理 golang web

现有两个Golang Web服务程序: web1(8080), web2(8081), 两个域名:www.xxxxx.com, www.yyyy.com 在一台机器上,使xxxxx.com 解析到 8080端口,yyyy.com解析到8081端口 使用nginx进行反向代理的方法: 一、在nginx配置文件中,添加如下配置 server{ listen 80; server_name www.xxxxx.com xxxxx.com; location /{ try_files /_not_exists @backend; } location @backend{ proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header H...阅读全文

博文 2015-10-31 15:00:06 honsty0113

go实用小技能-自定义log输出格式

我们在使用go开发项目的时候,常常需要使用log包输出日志,go自带的log包默认输入格式为:时间+内容。 其实go还提供了几个很简单的输出选项 const ( Ldate = 1 << iota // 日期: 2009/01/23 Ltime // 时间: 01:23:23 Lmicroseconds // 微秒: 01:23:23.123123. Llongfile // 路径+文件名+行号: /a/b/c/d.go:23 Lshortfile // 文件名+行号: d.go:23 LUTC // 使用标准的UTC时间格式 LstdFlags = Ldate | Ltime // 默认 ) package main import ( "log" ) func main() { Ldef...阅读全文

博文 2016-12-22 09:00:02 dogo_小小人物

Golang程序配置方案小结

Golang程序配置方案小结 七 01 bigwhite技术志 Bool, cobra, config, Cpp, Education, flag, getopt, Go, Golang, ini, Java, json, multiconfig, Perl, POSIX, Ruby, Shell, TOML, twitter, viper, Windows, 命令行选项, 标准库, 配置文件 No Comments 在Twitter上看到一篇关于Golang程序配置方案总结的系列文章(一个mini series,共6篇),原文链接:在这里。我觉得不错,这里粗略整理(非全文翻译)一下,供大家参考。 一、背景 无论使用任何编程语言开发应用,都离不开配置数据。配置数据提供的形式有多样,不外乎命令...阅读全文

golang+数据库定时任务

golang+数据库定时任务 项目背景大致如下,楼主在用nodejs写项目时遇到一些需要定时去处理的事情,例如僵尸用户定时清除,一些产品定时下架,邮件定时发送等等! 期初使用nodejs setTimeOut递归嵌套实现,后来发现内存不断飙升,故而放弃,最终改用了性能不错的golang实现 数据库设计 字段名称 含义 id 编号 name 任务名称 create_at 创建时间 type 1. 执行一次 2.循环执行 separate_time 执行间隔 status 执行状态 0.未开始 1. 执行中 -1.执行失败 -2.手动暂停 remark 备注信息 fn 要执行的数据库存储过程或函数 start_time 开始执行时间 next_exec_time 下次执行时间 last_exec...阅读全文

博文 2015-05-26 19:00:10 深山猎人

golang创建文件目录os.Mkdir、os.MkdirAll区别

本文主要讲述os.Mkdir、os.MkdirAll区别以及在创建文件目录过程中的一些其他技巧。 os.Mkdir("abc", os.ModePerm) //创建目录 os.MkdirAll("dir1/dir2/dir3", os.ModePerm) //创建多级目录 首先,试图从一个Go可执行文件创建一组嵌套目录(如’dir1/dir2/dir3’),并打印错误出来看看。 err:=os.Mkdir(“dir1/dir2/dir3”,os.ModePerm) if err!=nil{ fmt.Println(err) } result:mkdir ./dir1/dir2/dir3: The system cannot find the path specified. Mkdir 用于创...阅读全文

博文 2019-02-24 19:34:42 不屈真实

golang如何按行读取文本

golang如何按行读取文本 golang的库bufio.Scanner是非常方便用来处理文本文件。 下面的例子是按行读取文本文件。 package main import ( "os" "log" "fmt" "bufio" ) func main() { err := HandleText("a.txt") if err != nil { panic(err) } } func HandleText(textfile string) error { file, err := os.Open(textfile) if err != nil { log.Printf("Cannot open text file: %s, err: [%v]", textfile, err) return e...阅读全文

博文 2019-04-29 17:34:45 CodingCode

goLang 文件操作之一

go 官方库的文件操作分散在多个包中,感觉有点乱,比如os,ioutil包,基于别人总结的基础上简单总结一下 1.文件基本操作 1.1创建空文件 package main import ( "os" "log" ) var ( newFile *os.File err error ) func main(){ //创建文件 newFile,err=os.Create("text.txt") checkErr(err) log.Println(newFile) newFile.Close() } /** 检查错误 */ func checkErr(err error){ if err!=nil{ log.Fatal(err) } } 1.2 truncate 文件 package main i...阅读全文

博文 2018-02-07 15:34:38 soledad