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

golang判断文件或文件夹是否存在

golang判断文件或文件夹是否存在的方法为使用os.Stat()函数返回的错误值进行判断: 如果返回的错误为nil,说明文件或文件夹存在如果返回的错误类型使用os.IsNotExist()判断为true,说明文件或文件夹不存在如果返回的错误为其它类型,则不确定是否在存在 func PathExists(path string) (bool, error) { _, err := os.Stat(path) if err == nil { return true, nil } if os.IsNotExist(err) { return false, nil } return false, err ...阅读全文

博文 2015-11-28 16:00:01 xielingyun

Golang字符串切割函数Split

先说结论:大Golang里面,如果一个空字符串通过strings包的Split函数进行切割,那么结果是一个长度为1的数组,里面的内容是一个空字符串。 为了验证,分别在1.0.1、1.1、1.2.2、1.3.3、1.4rc上面进行了测试,验证了上面的结论是正确的。 func main() { a := strings.Split("", ";") fmt.Printf("%d****%s****\n", len(a), a[0]) } 这个也很好理解。切割一个空字符串,肯定是没办法切的,那么结果就是没切开,把原字符串直接加入结果数组里面而已。只不过一开始有点难理解,因为我们都会认为如果是空字符串去切,结果数组里应该是空的。 最近升级了beego1.4.2,谢大把beego控制器获取请求参数函数...阅读全文

博文 2017-02-10 16:00:13 Bryce

golang 创建,读取,写入文件

golang创建文本文件 f,err := os.Create(fileName) defer f.Close() if err !=nil { fmt.Println(err.Error()) } else { _,err=f.Write([]byte("要写入的文本内容")) checkErr(err) } golang读取文本文件 f, err := os.OpenFile(fileName, os.O_RDONLY,0600) defer f.Close() if err !=nil { fmt.Println(err.Error()) } else { contentByte,err=ioutil.ReadAll(f) checkErr(err) fmt.Println(strin...阅读全文

博文 2018-08-13 14:31:34 ILVNMM

golang 读取配置文件

unix 风格的配置文件 [default] path= c:/go version = 1.44 [test] num = 666 something = wrong #注释1 #fdfdfd = fdfdfd 注释整行 refer= refer //注释3 config.go package conf import ( "bufio" "io" "os" "strings" ) const middle = "=========" type Config struct { Mymap map[string]string strcet string } func (c *Config) InitConfig(path string) { c.Mymap = make(map[string]...阅读全文

博文 2015-06-18 17:04:36 u014798316

go build和go install的区别

go build通过go build加上要编译的Go源文件名,我们即可得到一个可执行文件,默认情况下这个文件的名字为源文件名字去掉.go后缀。 $ go build hello.go $ lshello hello.go 当然我们也 可以通过-o选项来指定其他名字: $ go build -o mygo hello.go $ lsmygo hello.go 如果我们在go-examples目录下直接执行go build命令,后面不带文件名,我们将得到一个与目录名同名的可执行文件: $ go build $ lsgo-examples hello.go go install与build命令相比,install命令在编译源码后还会将可执行文件或库文件安装到约定的目录下。 go install编译...阅读全文

golang 逐行读取文件

package main import ( "bufio" "fmt" "io" "os" ) func main() { fi, err := os.Open("C:/Documents and Settings/xxx/Desktop/tax.txt") if err != nil { fmt.Printf("Error: %s\n", err) return } defer fi.Close() br := bufio.NewReader(fi) for { a, _, c := br.ReadLine() if c == io.EOF { break } fmt.Println(string(a)) } } ================一次性读取=================...阅读全文

博文 2015-04-07 14:00:00 rojas

学习go语言碰到的问题:main redeclared in this block

E:\goapp 是我的GOPATH目录 分别建立了2个文件: hello.go // hello package main import "fmt" func main() { fmt.Println("Hello World! 你好,世界!") } sandbox.go // sandbox package main import ( "fmt" "time" ) func main() { fmt.Println("Welcome to the playground!") fmt.Println("The time is ", time.Now()) } 在liteide运行BR的时候报错了:main redeclared in this block previous declarat...阅读全文

博文 2015-06-17 23:02:23 lz0426001

golang文件下载

golang文件下载 func downloadFile(fileFullPath string, res *restful.Response) { file, err := os.Open(fileFullPath) if err != nil { res.WriteEntity(_dto.ErrorDto{Err: err}) return } defer file.Close() fileName := path.Base(fileFullPath) fileName = url.QueryEscape(fileName) // 防止中文乱码 res.AddHeader("Content-Type", "application/octet-stream") res.AddHeader(...阅读全文

博文 2016-11-18 08:00:03 yueguanyun

golang读取ini配置文件

golang读取ini配置文件 一、安装config配置解释包: go get github.com/larspensjo/config 二、载入其包及代码设置 package main import ( "flag" "fmt" "github.com/larspensjo/config" "log" "runtime" ) var ( configFile = flag.String("configfile", "config.ini", "General configuration file") ) //topic list var TOPIC = make(map[string]string) func main() { runtime.GOMAXPROCS(runtime.NumC...阅读全文

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

在 Go 语言中使用 casbin 实现基于角色的 HTTP 权限控制

身份认证和授权对 web 应用的安全至关重要。最近,我用 Go 完成了我的第一个正式的 web 应用,这篇文章是在这个过程中我所学到的部分内容。 本文中,我们的关注点在于如何在 web 应用中使用开源的 casbin 库进行 HTTP 权限控制。同时,在示例代码中我们使用了 scs 库进行 session 管理。 下面的例子十分基础,希望它尽可能的展示了如何在 Go web 应用中实现权限控制。为了更侧重于展示 casbin 的使用,我们尽量简化业务逻辑(例如:不需密码的登陆操作)。我们一起来看一下! 注意:请不要在生产环境中使用所示的用例代码,该例子侧重于描述清晰,而不是安全性。 ## 建立 首先,我们创建一个 User 模型,并实现了相应方法: ``` go type User stru...阅读全文

博文 2018-02-01 14:12:46 polaris

Golang操作excel文件

文件 处理前.png 处理后文件 处理后.png 1、将三个标签页放到一个标签页中; 2、在第二个文件中新加一列时间,内容为第一个文件的标签页名; 3、将值大于7200的内容标红颜色。 package main import ( "github.com/tealeg/xlsx" "fmt" "strconv" ) type ora struct { corp string //单位 name string //业务系统 name2 string //进程名 v1000 string //10点值 v2000 string //20点值 H string // 最大值 L string // 最小值 A string // 平均值 TIME string // 时间 } func readXl...阅读全文

博文 2019-05-10 19:35:10 发条家的橙子

无法安装 golang.org/x/tools/的库

安装godep 官方的安装文档是使用go get github.com/tools/godep,很可惜,因为“网络”问题会报一个找不到golang.org/x/tools/go/vcs的错误。 而https://github.com/golang/tools 是 golang.org/x/tools的一个镜像,代码是一样的,所以我是如下安装的。 go get github.com/golang/tools 在GOPATH\src\github.com目录下就有tools文件夹。 在src下和github.com平级新建golang.org文件下,在此文件夹下建x文件夹,然后将tools都复制进去。 然后再执行go get github.com/tools/godep。 此时godep安装在你...阅读全文

博文 2016-05-20 02:00:01 diegodu

golang zip 压缩,解压(含目录文件)

每天学习一点go src。 今天学习了zip包的简单使用,实现了含目录的压缩与解压。 写了两个方法,实现了压缩、解压。 package ziptest import ( "archive/zip" "io" "os" "strings" ) //压缩文件 //files 文件数组,可以是不同dir下的文件或者文件夹 //dest 压缩文件存放地址 func Compress(files []*os.File, dest string) error { d, _ := os.Create(dest) defer d.Close() w := zip.NewWriter(d) defer w.Close() for _, file := range files { err := compress...阅读全文

博文 2016-07-06 00:00:00 xiaofengshuyu

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

golang 读取文件

golang 按行读取文件 file, err := os.Open("app-2019-06-01.log") if err != nil { log.Fatal(err) } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { lineText := scanner.Text() } 整个读取 b, err := ioutil.ReadFile("app-2019-06-01.log") // just pass the file name if err != nil { fmt.Print(err) } str := string(b) // convert content to a 'st...阅读全文

博文 2019-07-13 20:32:39 云衡_

Go语言中Path包用法

// path package main import ( "fmt" "os" "path" "path/filepath" ) func main() { //Path操作 fmt.Println("Path操作-----------------") fmt.Println(path.Base("http://www.baidu.com/file/aa.jpg")) //aa.jpg fmt.Println(path.Clean("c:\\file//abc///aa.jpg")) //c:\file/abc/aa.jpg fmt.Println(os.Getwd()) //D:\Projects\GoPath\source\demo\syntax\path fmt.Prin...阅读全文

博文 2016-04-07 05:00:00 songxingzhu

聊一聊,Golang “相对”路径问题

前言 Golang 中存在各种运行方式,如何正确的引用文件路径成为一个值得商议的问题 以 gin-blog 为例,当我们在项目根目录下,执行 go run main.go 时能够正常运行(go build也是正常的) [$ gin-blog]# go run main.go [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. - using env: export GIN_MODE=release - using code: gin.SetMode(gin.ReleaseMode) [GIN-debug] GET /api/v1/tags --> gin-blog/rou...阅读全文

博文 2018-03-13 00:34:39 煎鱼

golang语言os.Stat()用法及功能

package main import ( "fmt" "os" ) func main() { fileinfo, err := os.Stat(`C:\Users\Administrator\Desktop\UninstallTool.zip`) if err != nil { panic(err) } fmt.Println(fileinfo.Name()) //获取文件名 fmt.Println(fileinfo.IsDir()) //判断是否是目录,返回bool类型 fmt.Println(fileinfo.ModTime()) //获取文件修改时间 fmt.Println(fileinfo.Mode()) fmt.Println(fileinfo.Size()) //获取文件大小...阅读全文

博文 2014-10-04 19:26:12 igolang

教你如何让go get畅通无阻

目前golang开发有一些热度,仅仅在github上面就有大量的用go重写的项目或go开发创新项目。 go开发者经常需要使用go get来下载和安装第三方库或软件。经常会碰到go get无法访问,因为这些第三方库或软件或项目对应的网站被墙了。 很多人都是用shadowsocks来翻墙,但是shadowsocks是基于socks5协议的。对于go get并没有什么用处。如果我们能把socks5代理转为http代理,那就可以访问了。 一个牛逼的国人用go开发了一个可以将socks5代理转为http代理的项目cow。请点击链接进入项目,按照文档学习使用。设置非常简单,提供的说明很清晰易懂。按照说明,可以在本机启动一个http代理,以shadowsocks为二级代理。之后就可以畅通无阻的go get...阅读全文

博文 2017-02-24 15:00:10 hutaishi

golang读取json配置文件

test_json.go: package main import ( io "io/ioutil" json "encoding/json" "fmt" ) type JsonStruct struct{ } func NewJsonStruct () *JsonStruct { return &JsonStruct{} } func (self *JsonStruct) Load (filename string, v interface{}) { data, err := io.ReadFile(filename) if err != nil{ return } datajson := []byte(data) err = json.Unmarshal(datajson, v) if ...阅读全文

博文 2015-10-14 17:00:02 徐学良

Go实战--golang中读写文件的几种方式

生命不止,继续 go go go !!! 读写文件应该是在开发过程中经常遇到的,今天要跟大家一起分享的就是在golang的世界中,如何读写文件。 使用io/ioutil进行读写文件 先回忆下之前的ioutil包介绍: Go语言学习之ioutil包(The way to go) 其中提到了两个方法: func ReadFile func ReadFile(filename string) ([]byte, error) ReadFile reads the file named by filename and returns the contents. A successful call returns err == nil, not err == EOF. Because ReadFile ...阅读全文

博文 2017-08-03 06:31:02 wangshubo1989

go语言实现遍历目录,及查找特定的文件类型

1 // filelist.go 2 package main 3 4 import ( 5 //"flag" 6 "fmt" 7 "os" 8 "path/filepath" 9 "strings" 10 ) 11 12 var ( 13 ostype = os.Getenv("GOOS") // 获取系统类型 14 ) 15 16 var listfile []string //获取文件列表 17 18 func Listfunc(path string, f os.FileInfo, err error) error { 19 var strRet string 20 strRet, _ = os.Getwd() 21 //ostype := os.Getenv("GOOS") // ...阅读全文

博文 2014-10-04 19:26:45 sn-dnv-aps

Go 中使用 INI 作为配置文件

想必大家都用过 Go 标准库中的 flag 包, 这个是一个十分好用的命令行参数解析库, 但是标准库中并没有关于配置文件解析的包, 官方一般是使用 json 作为配置文件的, 但是对于一些比较简单的情况, 没有复杂的嵌套的情况, 使用 json 作为配置文件, 书写起来还是有点麻烦 (主要是花括号和冒号引号什么的). 于是, 正好有一个项目需要实现一个读取ini配置文件的模块, 我就按照类似 flag 的 api 写了一个 ini parser. 1 go get -u github.com/c4pt0r/ini 使用方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package main import ( "log" "github....阅读全文

golang调用c++的dll库文件

最近使用golang调用c++的dll库文件,简单了解了一下,特作此笔记:一、DLL 的编制与具体的编程语言及编译器无关只要遵循约定的 DLL 接口规范和调用方式,用各种语言编写的 DLL 都可以相互调用。譬如 Windows 提供的系统 DLL (其中包括了 Windows 的 API ),在任何开发环境中都能被调用,不在乎其是 Visual Basic 、 Visual C++ 还是 Delphi 二、dll文件里面需要被其他程序访问的函数必须导出,有2种方法源文件如下:DllTestDef.h #ifndef DLLTESTDEF_H #define DLLTESTDEF_H int add(int x, int y); #endif DllTestDef.cpp #include "...阅读全文

博文 2016-02-21 03:00:00 lxsky

Golang的 signal

在实际项目中我们可能有下面的需求: 1、修改了配置文件后,希望在不重启进程的情况下重新加载配置文件; 2、当用 Ctrl + C 强制关闭应用后,做一些必要的处理; 这时候就需要通过信号传递来进行处理了。golang中对信号的处理主要使用os/signal包中的两个方法:一个是notify方法用来监听收到的信号;一个是 stop方法用来取消监听。 监听信号 notify方法原型 func Notify(c chan<- os.Signal, sig ...os.Signal) 第一个参数表示接收信号的管道 第二个及后面的参数表示设置要监听的信号,如果不设置表示监听所有的信号。 下面是一个非常简单地例子: package main import ( "fmt" "os" "os/signal"...阅读全文

博文 2015-02-05 03:00:01 ghj1976

[总结] 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

go package的理解

golang package是基本的管理单元, 同一个package下面,可以有非常多的不同文件,只要 每个文件的头部 都有 如 "package xxx" 的相同name, 就可以 在主方法中使用 xxx.Method()调用不同文件中的方法了。 文件夹名字可以和这个package 名称不一致, 比如我有个文件夹名字是mypackage,其中包含了a.go,b.go, c.go三个文件 : mypackage | --a.go | --b.go | --c.go 比如a.go中有 Saya(),b.go中有Sayb() 而几个文件共同的package name 确是testpackage 所以在 主函数中调用a.go 和b.go文件中的各自方法只要用,testpackage.Saya() ...阅读全文

博文 2015-04-24 00:00:00 rojas

Golang-使用goconfig 读取配置文件

使用goconfig 读取ini 配置文件 安装 go get github.com/Unknwon/goconfig 使用方法 加载配置文件 cfg, err := goconfig.LoadConfigFile("conf.ini") if err != nil{ panic("错误") } [mysql] username=root password=123456 url=(127.0.0.1:3306)/baidu [redis] address=127.0.0.1:6379 读取 读取单个值 value, err := cfg.GetValue("mysql", "username") valut, err := cfg.Int("must", int) 读取整个区 sec err...阅读全文

博文 2018-08-07 12:34:49 yunpiao

golang对象序列化和反序列化

模拟测试1,000, 000条数据 每条10个字节 也就是10M不到的 数据(高度结构化的数据) 过程 1.对象序列化为 byte 2.byte反序为对象 3.gzip压缩byte 测试语言go测试方案: raw byte,json ,bson, msgpack (protostuff需要先做对象配置文件,比较麻烦,通常认为和msgpack性能相当 )结果:msgpack 胜出 大小 gzip压缩后大小 对象到byte耗时 byte到对象耗时 raw 10000000 6573252(65%) 未测试 未测试 json 47515988 7919511 (17%) 3248ms 5280ms bson 49888910 9506965 (19%) 3863ms 6235ms msgpack ...阅读全文

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

golang os.Args

package main import( "os" "fmt" ) func main(){ if len(os.Args)!=0{ fmt.Println(os.Args[0])// args 第一个片 是文件路径 } fmt.Println(os.Args[1]) // 第二个参数是, 用户输入的参数 例如 go run osdemo01.go 123 } /* 结果 C:\Users\lyl\AppData\Local\Temp\go-build048711186\command-line-arguments\_obj\exe\osdemo01.exe 123 *...阅读全文

博文 2017-11-15 09:03:06 304158

golang 建临时文件目录以及删除

package main import ( "fmt" "os" "path/filepath" "strings" ) func destorytemp(path string) { filepath.Walk(path, func(path string, fi os.FileInfo, err error) error { if nil == fi { return err } if !fi.IsDir() { return nil } name := fi.Name() if strings.Contains(name, "temp") { fmt.Println("temp file name:", path) err := os.RemoveAll(path) if err !=...阅读全文

博文 2015-04-07 03:00:05 rojas

Go 获取当前可执行文件的所在目录

代码如下: import ( "errors" "os" "os/exec" "path/filepath" "strings" ) func GetCurrentPath() (string, error) { file, err := exec.LookPath(os.Args[0]) if err != nil { return "", err } path, err := filepath.Abs(file) if err != nil { return "", err } i := strings.LastIndex(path, "/") if i < 0 { i = strings.LastIndex(path, "\\") } if i < 0 { return "", err...阅读全文

博文 2017-02-13 04:00:26 风华神使

golang ioutil.WriteFile函数perm参数的用法

golang ioutil.WriteFile函数perm参数的用法 ioutil.WriteFile(..., perm os.FileMode) 刚开始接触golang的文件API的时候,总是纳闷为什么在创建文件的时候需要显示的指定文件的perm属性,难道不能从系统的umask里面获取吗? 实际上ioutil.WriteFile在创建新文件时,并不是直接使用参数perm的值,而是要和umask的值做合并的。把函数参数的值合并到当前umask的值,才是最终创建出来文件的perm属性。 umask的含义 某位是1时,则把这位的perm属性关闭(disable) 某位是0时,则把这位的perm属性打开(enable) owner group other 0 - rwx - rwx - rwx ...阅读全文

博文 2019-04-02 12:34:39 CodingCode

golang shadowsock 安装部署

最近一直在用ss但是python的并发并不是很好所以我改换成golang 的ss了。代码下载 编译好的直接下载 server配置(跟官方的不一样): 新建文件夹 进入文件夹后新建文件:config.json pid.cfg start.sh test.log config 是server运行的配置文件 pid.cfg 是server运行的进程号记录的位置 start.sh 是服务启动时候运行的脚本 test.log 这个是排查故障的时候用的错误记录文件 config.json 12345678{ "server":"XXX.com", //服务器ip地址或者绑定的域名 "server_port":8088, // 运行的端口 "local_port":1080, //本地运行端口 "pass...阅读全文

博文 2015-03-09 12:02:02 jianyingLi

go生成csv

package main import ( "encoding/csv" "os" ) func main() { f, err := os.Create("test.csv")//创建文件 if err != nil { panic(err) } defer f.Close() f.WriteString("\xEF\xBB\xBF") // 写入UTF-8 BOM w := csv.NewWriter(f)//创建一个新的写入文件流 data := [][]string{ {"1", "中国", "23"}, {"2", "美国", "23"}, {"3", "bb", "23"}, {"4", "bb", "23"}, {"5", "bb", "23"}, } w.WriteAll(d...阅读全文

博文 2014-10-04 19:26:36 别人说我名字很长

beego里面自定义配置文件

beego编译好的exe通过全路径调用会crash,看了半天,发现是解析不到配置文件,研究了下 发现beego自定义配置文件以后,需要收工parse,我表示,以为是自动化的,没想到是半自动化的…… package main import ( _ "hello/routers" "github.com/astaxie/beego" "fmt" ) func main() { beego.AppConfigPath = "/Users/mmc/dev/golang/myApps/src/hello/conf/app.conf" beego.ParseConfig() port,_ := beego.AppConfig.Int("httpport") fmt.Println("name ", be...阅读全文

博文 2016-02-25 03:00:02 ziyouchutuwenwu

golang中goconfig包使用解析

注意事项 本博客隶属于 goconfig - 课时 1:goconfig 使用解析 请注意配套使用。 本博文为 goconfig - Go 语言 INI 解析器的配套博客,旨在通过文字结合代码示例对该库的使用方法和案例进行讲解,便于各位同学更好地使用和深入了解。 库简介 goconfig 是一个由 Go 语言开发的针对 Windows 下常见的 INI 格式的配置文件解析器。该解析器在涵盖了所有 INI 文件操作的基础上,又针对 Go 语言实际开发过程中遇到的一些需求进行了扩展。相对于其它 INI 文件解析器而言,该解析器最大的优势在于对注释的极佳支持;除此之外,支持多个配置文件覆盖加载也是非常特别但好用的功能。 下载安装 您可以通过以下两种方式下载安装 goconfig: gopm get...阅读全文

博文 2015-10-28 22:00:41 chenbaoke

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文件名命名规则

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 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 大呜

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实战--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