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

基于Gin框架封装go web项目骨架(GoSkeleton)

1.这是一个基于go语言gin框架的web项目骨架,定位于单体应用开发,其目的主要在于将web项目主线逻辑梳理清晰,最基础的东西封装完善,让开发者更多关注实际业务进行快速开发即可。 2.专注于前后端分离业务场景,开发常用模块齐全,从项目开发到上线、运维。我们提供了整套解决方案。 3.更多功能参见项目地址以及文档:https://gitee.com/daitougege/GinSkeleton 4.项目整体逻辑 ![图例](http://139.196.101.31:2080/GinSkeleton.jpg) 5.并发测试 > 2核4g云服务器并发测试, QPS 1 万+ ![QPS](http://139.196.101.31:208...阅读全文

开源项目 2020-08-20 14:58:32 张三丰

【golang】用container/list实现栈(Stack)

go语言中的container有heap、list、ring,没有stack。 其中heap是优先级队列,虽然有Push()/Pop()接口,但是使用heap要实现heap.Interface接口,不够简洁。 所以这里用list封装了一个简单的stack,留作他用。 1 package stack 2 3 import "container/list" 4 5 type Stack struct { 6 list *list.List 7 } 8 9 func NewStack() *Stack { 10 list := list.New() 11 return &Stack{list} 12 } 13 14 func (stack *Stack) Push(value interface{...阅读全文

博文 2014-10-04 19:26:10 chinabrle

Go中进行字符集转换

Go代码本身是UTF-8的,而且官方没有提供相关字符集的转换库。不过,目前已经有一些开源库支持字符集转换。 1. [iconv-go](https://github.com/djimenez/iconv-go),通过cgo封装了iconv库; 2. [qiniu iconv](https://github.com/qiniu/iconv),同样通过cgo封装iconv库; 3. [go-charset](http://code.google.com/p/go-charset/),支持UTF-8转换为其他字符集(非iconv库),同时也封装了iconv,提供更多字符集的转换; 4. [Mahonia—a character-set conversion library fo...阅读全文

golang excel

github.com/tealeg/xlsx 封装的接口简单易用 package main import ( "bufio" "fmt" "github.com/tealeg/xlsx" "os" "strings" ) func main() { if len(os.Args) != 3 { fmt.Printf("Usage : %s inFile outFile\n", os.Args[0]) return } inFileName := os.Args[1] outFileName := os.Args[2] inFh, err := os.OpenFile(inFileName, os.O_RDONLY, 0755) if err != nil { fmt.Printf("open...阅读全文

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

GO-log日志封装

Go封装日志: 支持归档输出,一个小时压缩归档一份 最多保留三天的日志 支持日志级别自定义 如果没有指定输出文件默认输出到控制台。 支持输出文件名行号,以及时间、日志界别 如: info 10:08:40.826836 handler.go:81 package logger import ( "fmt" "log" "os" "os/exec" "strings" "time" ) const ( PanicLevel int = iota FatalLevel ErrorLevel WarnLevel InfoLevel DebugLevel ) type LogFile struct { level int logTime int64 fileName string fileFd *o...阅读全文

博文 2016-09-17 09:00:01 gdutliuyun827

go,Buffer以及相关数据类型

## 主要内容 ## - 在go代码中经常见到bytes.Buffer类型数据 - bytes.Buffer这个数据跟 []byte之间有什么关系呢 - bytes.Buffer相关的数据类型之间转换 ---------- bytes.Buffer bytes是这个包的名字,bytes.Buffer则是一种缓存数据类型. type Buffer struct { buf []byte off int // read at &buf[off], write at &buf[len(buf)] runeBytes...阅读全文

阿里百川服务相关接口

https://github.com/smartwalle/taobao 由于项目需要用到阿里百川相关的服务,所以用 Golang 封装了一套阿里百川服务的 SDK,目前主要包括但不限于如下一些功能: * 及时通讯(IM):发消息(一对一、一对多)、添加用户、删除用户、更新用户信息等 * 消息推送:目前已完成所有接口的封装 * 短信发...阅读全文

golang 基于go-sql-driver的增删改查的简单封装

建一个简单的test表 CREATE TABLE `test` ( `a` int(11) NOT NULL AUTO_INCREMENT, `b` int(11) DEFAULT NULL, PRIMARY KEY (`a`) ) ENGINE=InnoDB AUTO_INCREMENT=157 package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/test?charset=utf8") if err != nil { panic(err.Erro...阅读全文

博文 2015-06-17 20:23:37 u014798316

golang解析json报错:invalid character '\x00' after top-level value

golang解析json报错:invalid character '\x00' after top-level value 手动复制字符串:{"files":["c:/test/output/temp/file_export0000.out","c:/test/output/temp/file_export0001.out","c:/test/output/temp/file_export0002.out","c:/test/output/temp/file_export0003.out","c:/test/output/temp/file_export0004.out"]} 发现没有问题 原来是封装传出字符串的时候出问题了 *len = output.length() + 1; char*...阅读全文

博文 2017-11-30 16:00:00 zhishuai

用xgb和freetype-go建立窗口并画图

最近一直在鼓捣怎样用golang画图(不想用cgo来封装c库),终于找到了xgb和freetype-go。 xgb可以用来创建窗口,freetype-go中的raster库可以用来画图。 下面我用它们写了一个简单的程序,它在窗口中画了个90度的扇形 package main import ( "code.google.com/p/freetype-go/freetype/raster" "fmt" "github.com/BurntSushi/xgbutil" "github.com/BurntSushi/xgbutil/xevent" "github.com/BurntSushi/xgbutil/xgraphics" "...阅读全文

一个干净优雅的 Element UI Admin 模板

# Element UI Admin > 一个干净优雅的Element UI Admin模板 *一个大型单页应用离不开合理的项目机构和一些简单的封装* https://github.com/xusenlin/element-starter ## Start - 克隆或者下载这个仓库 - 进入项目目录安装依赖 ``` bash yarn ``` ## Develop ``` bash # serve with hot reload at localhost:8010 npm run dev ``` ## Build ``` bash # build for production with minification np...阅读全文

封装 sql.open方法求助

后来知道 没必要每次操作数据库都open的 只需要连接一次即可 那么封装遇到难题了。 如吧下面代码 放到一个 Mysql文件夹里 package Mysql 然后 引入到需要操作数据库的地方 直接 ~~~ Mysql.db.Query("select * from user") ~~~ 的方式执行查询条件 省去了open 但是我不知道如何调用, 希望大牛们给个代码 ~~~ var db *sql.DB func init() { db, _ = sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/test?charset=utf8") db.SetMaxOpenConns(2000) db.SetMaxIdle...阅读全文

golangframework

当前基本完成封装的基本库 JSON ——泛型,协助处理 https://github.com/golangframework/JSON String ——该类是一个[] uft8char,以及常用方法的封装 https://github.com/golangframework/String Directory——公开用于通过目录和子目录进行创建、移动和枚举的静态方法,仿C#的简洁风格 https://github.com/golangframework/Directory Object——协助处理各种未知类型 File——提供用于创建、复制、删除、移动和打开单一文件的静态方法,仿C#的简易风格 https://github.com/golangframew...阅读全文

golang中fmt vs log

真正的项目中一定要使用log或者封装更高层的自定义log,不要直接使用fmt,原因有2: (1)最重要的一点,log包是并发goroutine安全的,而fmt不是,这点特别重要,可以看如下的例子 func main() { log.Printf(" %s", "1.1.1.1002") log.Printf(" %s", "aaa") sigTerm := syscall.Signal(15) log.Println(reflect.TypeOf(sigTerm)) fmt.Println("HAHAHAHAHAHAHAHAHAHA") fmt.Println("ahahahaha")} 结果会出现: 2015/01/13 02:12:04 1.1.1.1002 HAHAHAHAHAHAHA...阅读全文

博文 2015-10-24 14:00:01 paladinosment

go 调用c dll,如何返回一个struct结构

我想封装nlpir的分词函数,其中有个函数 ```c result_t * NLPIR_ParagraphProcessA(const char *sParagraph,int *pResultCount,bool bUserDict=true) ``` result_t定义 ```c struct result_t{ int start; //start position,词语在输入句子中的开始位置 int length; //length,词语的长度 char sPOS[POS_SIZE];//word type,词性ID值,可以快速的获取词性表 int iPOS;//词性 int word_ID; //如果是未登录词,设成或者-1 int wor...阅读全文

"signal arrived during cgo execution"错误

在使用go封装一个C函数时,出现了如下错误 ``` exit status 2 FAIL deepifier 0.239s Exception 0xc0000005 0x0 0xfffffffffffffff8 0x773d06c5 PC=0x773d06c5 signal arrived during cgo execution syscall.(*Proc).Call(0xc082004740, 0xc08204be60, 0x2, 0x2, 0x0, 0xc0820a4860, 0x0, 0x0) c:/go/src/syscall/dll_windows.go:132 +0x36e gonlpir/deepifier.(*Deepifier).AddTrain...阅读全文

Golang - 阿里大于最新sdk 2017-05-25

阿里大于最新sdk 2017-05-25 本sdk基于阿里大于java最新版,版本为2017-05-25 因开发中需求短信发送,一开始没准备自己写,找了几个go版本的,发现怎么调用都会错, 后来在阿里的sdk中发现原来所有的都改变了,原sdk已经无法现使用,没办法,只好自己 封装。 使用非常简单 go get github.com/ying32/alidayu import "github.com/ying32/alidayu" // mobileNo, signName, templateCode, paramString, appKey, appSecret string result, _, err := alidayu.SendSMS("13333333333", "验证码", "你...阅读全文

博文 2017-11-17 23:03:30 不在乎y

golang md5值计算

golang内置了md5的算法,这里只是封装一层,方便使用 func MD5Bytes(s []byte) string { ret := md5.Sum(s) return hex.EncodeToString(ret[:]) } //计算字符串MD5值 func MD5(s string) string { return MD5Bytes([]byte(s)) } //计算文件MD5值 func MD5File(file string) (string, error) { data, err := ioutil.ReadFile(file) if err != nil { return "", err } return MD5Bytes(data), nil } 查看更多: https:...阅读全文

博文 2019-04-17 03:34:41 小风吹的我乱了

【golang】go语言,进行并发请求的wrap变参封装

package main import ( "fmt" "sync" "time" ) type WaitGroupWrapper struct { sync.WaitGroup } func (w *WaitGroupWrapper) Wrap(cb func(argvs ...interface{}), argvs ...interface{}) { w.Add(1) go func() { cb(argvs...) w.Done() }() } type MyStruct struct { Age int Name string Sex bool } func GetAge(argvs ...interface{}) { age := argvs[0].(int) my := argv...阅读全文

博文 2015-10-15 03:00:00 zhangqingping

golang的另一种风格的汉化封装库golangframework

#golangframework 从其它语言转golang,会发现,golang的部分库,其实不合理。 国外的库,又缺少中文文档。 因此,我希望学习其他优秀的库,以及其它语言的优雅风格,封装一些常用到的库,减少不必要的引用 #当前基本完成封装的基本库 JSON ——泛型,协助处理json String ——该类是一个[] uft8char,以及常用方法的封装 Directory——公开用于通过目录和子目录进行创建、移动和枚举的静态方法,仿C#的简洁风格 Object——协助处理各种未知类型 File——提供用于创建、复制、删除、移动和打开单一文件的静态方法,仿C#的简易风格 #正在封装的服务端组件库 httpmongo——用golang对mongo数据库...阅读全文

go编译github.com/pebbe/zmq4失败

github.com/pebbe/zmq4是对zeromq 4.x的go语言封装,在go中使用了cgo混合编译。 我安装完zeromq4.1.3后,编译时控制台输出如下,麻烦大神看看是什么问题。 [ `go build` | done: 478.984962ms ] # github.com/pebbe/zmq4 gcc did not produce error at completed:1 on input: #line 3 "/Users/besthaos/work/study/go/workspace/src/github.com/pebbe/zmq4/zmq4.go" #include #include 阅读全文

Go 实现的加解密库GoRSA

Golang使用RSA进行公钥加密私钥解密,私钥加密公钥解密的实现 基于 [https://github.com/farmerx/gorsa](https://github.com/farmerx/gorsa) 进行封装优化了如下几点: 公私钥需要提前注册,在并发情况下公私钥匙会混乱 加密机没有进行base64处理,在跨程序传递或存储过程中都避免base64二次封装 传入返回都统一使用string类型避免转换麻烦 获取扩展包: 具体使用...阅读全文

开源项目 2018-02-17 02:30:00 网友

算法代码实现之希尔排序,Golang(Go语言)实现

封装成函数: func ShellSort(a []int) { n := len(a) h := 1 for h < n/3 { //寻找合适的间隔h h = 3*h + 1 } for h >= 1 { //将数组变为间隔h个元素有序 for i := h; i < n; i++ { //间隔h插入排序 for j := i; j >= h && a[j] < a[j-h]; j -= h { swap(a, j, j-h) } } h /= 3 }} func swap(slice []int, i int, j int) { slice[i], slice[j] = slice[j], slice[i]} 测试: s := []int{9,0,6,5,8,2,1,7,4,3}fmt....阅读全文

博文 2016-02-28 18:00:01 QQ245671051

还是一个闭包的问题

需求是这样的: 我封装了一个函数,遍历csv文件,每次打印一条记录. 我想把它改一下,每次调用这个函数,得到csv中的一条记录(也是遍历). 我是这样写的: ```go func GetOneline() func() string { f, err := os.Open("Urls.csv") if err != nil { panic( err) } read := csv.NewReader(f) return func() string { record, err := read.Read() if err == io.EOF { return "" } else if err != nil { g...阅读全文

Emacs支持gomodifytags

受到[《Go 终极指南:编写一个 Go 工具》](http://www.jianshu.com/p/20b533c5c3f9)的启发,萌生了把 [gomodifytags](https://github.com/fatih/gomodifytags) 封装成emacs-plugin的想法, 然后经过两周的努力,诞生了[emacs-go-tag](https://github.com/brantou/emacs-go-tag)。 `emacs-go-tag` 实现了两个命令: `go-tag-add` 添加结构体字段tag, `go-tag-remove` 删除结构体字段tag...阅读全文

Golang封装微信支付接口

自己花了点时间把微信支付接口用golang封装了一下,以便以后需要接微信支付的时候可以直接拿来用。之前在网上看了很多写得NB微信SDK,自己也想尝试一下,于是做了api的简单封装。 TODO: 公众号开发api 地址: Github package main import ( "fmt" dev "github.com/hong008/wechat-sdk" ) func main() { var appId, mchId, apiKey, apiSecret string client := dev.NewPayer(dev.WithAppId(appId), dev.WithMchId(mchId), dev.WithApiKey(apiKey), dev.WithSecret(apiS...阅读全文

博文 2020-01-04 19:32:51 心中的日月Go

golang封装结果集

之前找过很多结果集封装都不是很好,所以自己封装了下。 strFirstToUpper 字符串首字母转化为大写 /** * 封装结果集 */ func RowResult(rows *sql.Rows) []interface{} { //字典类型 //构造scanArgs、values两个数组,scanArgs的每个值指向values相应值的地址 columns, _ := rows.Columns() values := make([]sql.RawBytes, len(columns)) scanArgs := make([]interface{}, len(values)) for i := range values { scanArgs[i] = &values[i] } var r...阅读全文

博文 2016-11-29 07:00:04 yang8023tao

(转)golang并发atomic.Value安全操作

// 通过封装atomic.Value原子值类型,可以实现安全存储不会引发panic type atomicValue struct { v atomic.Value t reflect.Type } func NewAtomicValue(example interface{}) (*atomicValue, error) { if example == nil { return nil, errors.New("atomic value: nil example") } return &atomicValue{ t: reflect.TypeOf(example), }, nil } func (av *atomicValue) Store(v interface{}) error { ...阅读全文

博文 2019-04-17 23:34:40 one_zheng

算法代码实现之三向切分快速排序,Golang(Go语言)实现

封装成函数: //三向切分快速排序func ThreeWayQuickSort(s []int) { sort3way(s, 0, len(s)-1)} //在lt之前的(lo~lt-1)都小于中间值//在gt之前的(gt+1~hi)都大于中间值//在lt~i-1的都等于中间值//在i~gt的都还不确定(最终i会大于gt,即不确定的将不复存在)func sort3way(s []int, lo, hi int) { if lo >= hi { return } v, lt, i, gt := s[lo], lo, lo+1, hi for i <= gt { if s[i] < v { swap(s, i, lt) lt++ i++ } else if s[i] > v { swap(s, ...阅读全文

博文 2016-02-29 22:00:02 QQ245671051

在Windows下使用golang连接Oracle

在macOS和Linux下都很好解决Oracle sdk编译的问题,因为gcc和pkg-config都是自带的程序。但是在Windows下面没有两款程序,需要自行安装。好处是Msys2 已经封装了两款程序,配置如下:安装Msys2的教程如下,点我查看。安装完成后,使用 pacman -S mingw-w64-x86_64-toolchain注意:直接使用 pacman –S gcc安装的默认是mysy版本的,不好用。要使用上述命令安装到C:\Tools\msys64\mingw64目录下面才算。安装gcc程序。安装pkg-config程序的命令如下: pacman -S pkg-config两款程序安装完成后,都自动保存在C:\Tools\msys64\usr目录下面。安装pkg-confi...阅读全文

博文 2018-09-04 06:34:39 北山文化

算法代码实现之快速排序,Golang(Go语言)实现

封装成函数: //快速排序func QuickSort(s []int) { sort(s, 0, len(s)-1)} func sort(s []int, lo, hi int) { if lo >= hi { return } k := partition(s, lo, hi) sort(s, lo, k) sort(s, k+1, hi)} func partition(s []int, lo, hi int) int { i, j := lo, hi+1 //将lo作为中间值 for { for { i++ if i == hi || s[i] > s[lo] { break } } for { j-- if j == lo || s[j] <= s[lo] { break } }...阅读全文

博文 2016-03-07 21:00:02 QQ245671051

SendCloud 邮件发送 API 封装

https://github.com/smartwalle/sendcloud ## sendcloud 对 [SendCloud](http://sendcloud.sohu.com) 发送邮件 API 的封装,目前只实现了模板发送,其它方式以后有用到在做考虑。 使用方法如下: 设置 API 信息: UpdateApiInfo("api_user", "api_key") 发送邮件: var to = make([]map[string]string, 1) to[0] = map[string]string{"to":"917996695@qq.com", ...阅读全文

怎么注册这样的url

注册一个这样的url 格式比如 Regist_api("v1.0/find",Find) 处理函数Find是这样的格式 func Find(param []byte)[]byte{} 然后将注册Regist_api封装在一个静态库中 使用注册url函数时直接调用......如果将其Find封装在Handfunc(w http.ResponseWriter, r *http.Request)内的话如下: ```go func Regist_api(url string, F interface{}) { http.HandleFunc(url, handle) http.Handle() http.ListenAndServe(":8888", nil)...阅读全文

Golang状态模式

package main import ( "fmt" ) // 环境类 type Account struct{ State ActionState HealthValue int } // 状态类 type ActionState interface{ View() Comment() Post() } // new accout func NewAccount(health int) *Account{ a:=&Account{ HealthValue: health, } a.changeState() return a } // set healthValue for account func (a *Account) SetHealth(value int){ a.HealthV...阅读全文

博文 2019-05-06 15:46:53 黑手党老k

Sendcloud 邮件 API 的 Go 封装Go Sendcloud

这是一个 Sendcloud 邮件发送服务的 Go 语言封装包,可利用它在 Go 程序中通过 Sendcloud 发送邮件。 对 [SendCloud](http://sendcloud.sohu.com) 发送邮件 API 的封装,现已将 API 接口切换到了 v2 版本,如果想使用 v1 版本的 API,请 Checkout v1 Tag。 v2 版本新功能: 1、模板管理(添加、删除、更新、获取) 2、地址列表管理(添加、删除、更新、获取) 3、地址列表成员管理(添加、删除、更新、获取) 4、邮件发送(模板发送、地址列表发送、附件支持) 使用方法如下: 设置 API 信息: 发送邮件: 返回数据说明...阅读全文