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

golang的哪些坑爷事: package实践

在golang中package是个困惑的概念, 特别是package还可以与folder不同名, 委实让我恶心了一把. 关于golang的package的最佳实践: package is folder. package name is folder name. package path is folder path. 信耶稣得永生! 1. 同一个folder存在不同package, 编译错误: D:/go/bin/go.exe build [E:/cgss/src/pkg01] can't load package: package pkg01: found packages pkg01 (pkg01.go) and pkg012 (pkg02.go) in E:\cgss\src\pkg0...阅读全文

博文 2016-09-09 18:00:02 zolo

Go 1.8的Plugins使用

Go 1.8为我们提供了一个创建共享库的新工具,称为Plugins!让我们来创建和使用一个插件。 目前的插件只能在Linux和Darwin上工作。 安装1.8beta1,不做说明. 创建一个插件方法到aplugin.go: package main func Add(x, y int) int { return x+y } func Subtract(x, y int) int { return x-y } 然后构建插件: 运行下面命令构建插件: go build -buildmode=plugin 构建指定文件插件aplugin.go到aplugin.so: go build -buildmode=plugin -o aplugin.so aplugin.go 加载插件: p, _ := ...阅读全文

博文 2016-12-06 12:00:02 vWay

Golang热加载配置实践

前言 生产环境上所输出的日志级别较高不利于定位,会碰到这样一种场景,我们改配置修改日志级别,再重启,以期望定位问题,然而问题重启后不浮现了,所以热加载配置有必要添进去。 实践 直接上代码: package main import ( "encoding/json" "fmt" "io/ioutil" "os" "os/signal" "syscall" "time" ) type Config struct { Mode string `json:"Mode"` } var ( config *Config ) func loadConfig() { f, err := ioutil.ReadFile("config.json") if err != nil { fmt.Println("[...阅读全文

博文 2015-11-25 11:00:03 chenwenhao0304

Golang为别人写的csv文件处理的例子

package main import ( "encoding/csv" "flag" "io" "log" "os" "sort" "strings" ) var quick, first, unrepeat bool func main() { path := flag.String("p", "", "-p 指定csv文件路径") logname := flag.String("l", "", "-l 指定结果输出路径,不指定则输出到标准输出") flag.BoolVar(&quick, "q", false, "-q 数据全部加载到内存中处理,默认是少量数据加载到内存操作,bool值") flag.BoolVar(&first, "f", false, "-f 使用首次遇到的一条数据...阅读全文

博文 2016-10-10 01:00:01 fyxichen

go 调用dll文件

开始在给dll函数传递string参数的时候,总是go总是报内存溢出, string转换的方法: func StrPtr(s string) uintptr { return uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(s)))} 纠结很久,然后去golang社区查找资料,有人建议用指针, func (b *BangWei) WirteLock(lockData LockData) int { buff:=lockData.NO //定义参数规则 wb := syscall.NewLazyDLL("bwusbapi.dll") //加载dll 加载dll的方法在golang社区上很多,好像有两三种, Stwritedata := wb.Ne...阅读全文

博文 2017-09-06 16:30:17 YasinXiao

【Go】 格式处理

格式化字符串 在golang里面获取时间戳并不难。只要加载time包。time.Now().Unix() fmt.Sprintf("%d",int64),自此,go语言的int转换成string有3种方法 1、int32位,strconv.Itoa2、大于32位,strconv.FormatInt()3、万恶的fmt.Sprintf...好吧,这个我在php里是经常用来做格式化 引入strings包 strings.contains() index() indexany() indexFunc() 正则表达式 DFANFABacktrackin...阅读全文

博文 2015-07-06 03:00:00 viewcozy

golang实现热加载配置

今天继续优化了bigpipe项目,核心目标就是解决重启程序损失流量的问题。 背景 bigpipe作为一个消息中间件,其出现是为了给php程序提供方便的异步Http调用功能。然而php语言并不是常驻进程模型,当它请求bigpipe失败后,顶多重试几次,就必须尽快的向用户返回应答。因此,bigpipe服务的可用性是非常重要的。 bigpipe使用golang编写,采用channel逐层缓冲流量和数据,采用协程并发处理数据。因为bigpipe承接了若干业务,经常会对配置文件做一些修改,那么就必须重启bigpipe。 思考 在最初的版本中,bigpipe提供了优雅退出功能,也就是在退出前首先停止对外的Http服务,然后将进程内剩余的数据处理干净,最后再退出,这样不至于损失已经接受到的数据请求。 优雅...阅读全文

博文 2017-09-30 09:12:13 鱼儿的博客

Execute模板后setCookie失效?

刚开始学GO,遇到这样的情况: t, err := template.ParseFiles("/template/login.tpl") err = t.Execute(w, nil) //如果先执行 http.SetCookie(。。。)//失败,浏览器无法收到cookie 如果调换顺序,先setCookie,再Execute,便可成功设置cookie。 计划是在登陆页面login.tpl,ParseForm( )获取用户名和密码,验证合格以后才发放sessionID,如果反着写,虽然也能办到,但ParseForm( )和验证环节跑到了模板Execute前面: r.ParseForm( ) ...阅读全文

golang加载css和js

├── main.go ├── static │ ├── css │ │ └── main.css │ └── js │ └── main.js └── view └── index.html 若有如上目录结构 // main.go func main() { http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static")))) // 启动静态文件服务 // ... }