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

golang 下载和上传,处理多文件上传

package main import ( "net/http" "os" "io" "strconv") func main() { f, err := os.OpenFile("K:/file.mp3", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) stat, err := f.Stat() //获取文件状态 if err != nil { panic(err) } //把文件指针指到文件末,当然你说为何不直接用 O_APPEND 模式打开,没错是可以。我这里只是试验。 url := "http://127.0.0.1:3000/assets/37-02.mp3" req,_ := http.NewRequest("GET",url,nil); re...阅读全文

博文 2014-10-04 19:26:06 ggaaooppeennngg

Go语言中反射包的实现原理(The Laws of Reflection)

前言 过去只是知道某些语言带有反射,但是一直没机会使用这种高级功能,所以也没有深入了解过。昨天看golang时里面提到reflection,既然这么多语言支持这个性质,那就深入了解下好了。这篇文档翻译自官方文档的The Laws of Reflection,翻译目的不是为了翻译,而是加深自己记忆以及理解,所以有些地方可能不会直译,因为我没那么高水平,有时自己能看懂,但是按着原话翻译出来给别人听感觉好难。某些专用名词会继续保留原文,有时,其实我觉得还是英文更加容易理解。 The Laws of Reflection翻译 计算机中提到的反射指的是程序借助某种手段检查自己结构的一种能力,通常就是借助编程语言中定义的各种类型(types)。同时反射也是困惑的最大来源之一。 在这篇文章中,我们尝试通过...阅读全文

博文 2015-01-04 14:00:01 kjfcpua

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

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 Web编程的Get和Post请求发送与解析

Golang Web编程的Get和Post请求发送与解析 时间 2014-08-19 15:26:48 CSDN博客 原文 http://blog.csdn.net/typ2004/article/details/38669949 本文的是一篇入门文章,通过一个简单的例子介绍Golang的Web编程主要用到的技术。 文章结构包括: Client-Get 请求 Client-Post 请求 Server 处理 Get 和 Post 数据 在数据的封装中,我们部分采用了json,因而本文也涉及到Golang中json的编码和解码。 一、Client-Get package main import ( "fmt" "net/url" "net/http" "io/ioutil" "log" ) f...阅读全文

博文 2015-01-31 01:00:03 stephen830

golang中image包用法

image包实现了一个基本的2D图像库,该包中包含基本的接口叫做image,这个里面包含color,这个将在image/color中描述, image接口的值创建方式有如下几种: 1调用NewRGBA和NewPaletted 2解码一个包含gif.jpen或者png格式的image数据的io.Reader 首先介绍一些image接口 type Image //image是一个从颜色模型中采取color.Color的矩形网格 type Image interface { ColorModel() color.Model //ColorModel 返回图片的 color.Model Bounds() Rectangle //图片中非0color的区域 At(x, y int) color.Col...阅读全文

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

简单的Restful API例子(Golang)

RESTful API 这玩意不用多说了,用Go做了个很简单的例子: 服务端在被调用时返回JSON, 客户端解析得到相关JSON信息. 服务端源码: package main //简单的JSON Restful API演示(服务端) //author: Xiong Chuan Liang //date: 2015-2-28 import ( "encoding/json" "fmt" "net/http" "time" ) type Item struct { Seq int Result map[string]int } type Message struct { Dept string Subject string Time int64 Detail []Item } func getJ...阅读全文

博文 2015-06-17 20:17:24 xcltapestry

使用go语言复制文件

怎样使用go语言将文件复制成另一文件?go语言标准包io里提供一个简单的函数copy实现了这个功能,下面是一个例子。 //////////// package main import ( "fmt" "io" "os" ) func main() { CopyFile(os.Args[1], os.Args[2]) // os.Args[1]为目标文件,os.Args[2]为源文件 fmt.Println("复制完成",) } func CopyFile(dstName, srcName string) (written int64, err error) { src, err := os.Open(srcName) if err != nil { return } defer src.Cl...阅读全文

博文 2014-10-24 12:00:01 学思

golang的fmt包

package fmt import "fmt" mt包实现了类似C语言printf和scanf的格式化I/O。格式化verb('verb')源自C语言但更简单。 Printing verb: 通用: %v 值的默认格式表示。当输出结构体时,扩展标志(%+v)会添加字段名 %#v 值的Go语法表示 %T 值的类型的Go语法表示 %% 百分号 布尔值: %t 单词true或false 整数: %b 表示为二进制 %c 该值对应的unicode码值 %d 表示为十进制 %o 表示为八进制 %q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示 %x 表示为十六进制,使用a-f %X 表示为十六进制,使用A-F %U 表示为Unicode格式:U+1234,等价于"U+%04...阅读全文

博文 2014-10-04 19:26:41 刘地

Go语言关于XML的读取与生成

要读取的XML如下: Loading video… what 这种结构的XML,其末节点是属性与文本并存的(网上看到的大部分教程都是属性节点就是属性节点,文本节点就是文本节点) 根据这个XML,生成对应的struct type StringResources struct { XMLName xml.Name `xml:"resources"` ResourceString []ResourceString `xm...阅读全文

博文 2015-06-17 23:02:07 windvix

golang IO COPY

使用golang实现 IO copy,测试程序如下: package main import ( "fmt" "io" "os" "syscall" ) func main() { var errCh chan error errCh = Go(func() error { return test_stdout() }) if err := <-errCh; err != nil { fmt.Printf("End io_copy: %s\n", err) //return err } } //异步执行 func Go(f func() error) chan error { ch := make(chan error, 1) go func() { ch <- f() }() return...阅读全文

博文 2015-10-30 19:00:03 golang_yh

使用go,基于martini,和websocket开发简易聊天室

一、首先,需要了解一下websocket基本原理:here 二、go语言的websocket实现: 基于go语言的websocket也有不少,比如github.com/gorilla/websocket。这里选用的应该算是官方的实现code.google.com/p/go.net/websocket 使用go get安装下载即可。(不过,由于周知的原因:(,我是通过golangtc.com的第三方包下载功能才下载来的) 三、server端 第一个遇到的问题,websocket如何和martini集成? 安装websocket的文档,和http服务集成,应该使用如下方式 func ChatService (ws *websocket.Conn) { for{ io.Copy(ws,ws); }...阅读全文

博文 2015-01-16 18:00:02 dajianshi

[Go]通过HTTP获取信息返回JSON

用 HTTP.GET 从开放 API 中查询深圳通信息,然后将 JSON 数据存入结构体中,再格式化输出。注意:获取的并不是实时的深圳通信息Warm upstrconv.ParseUint: 解析无符号的数值字符串func ParseInt(s string, base int, bitSize int) (i uint64, err error)参数1 数字的字符串形式参数2 数字字符串的进制:二进制、八进制、十进制、十六进制参数3 返回结果的bit大小,也就是int8 int16 int32 int64encoding/json.Unmarshal: 解析 JSON 编码的数据json.Unmarshalgo-simplejson代码// 从开放的 Api 中查询深圳通相关信息。 // ...阅读全文

博文 2015-06-18 19:00:34 abv123456789

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 徐学良

Golang-interface(一 基本使用)

github: https://github.com/ZhangzheBJUT/blog/blob/master/interface.md 一 接口概述 如果说gorountine和channel是支撑起Go语言的并发模型的基石,让Go语言在如今集群化与多核化的时代成为一道亮丽的风景,那么接口是Go语言整个类型系列的基石,让Go语言在基础编程哲学的探索上达到前所未有的高度。 Go语言在编程哲学上是变革派,而不是改良派。这不是因为Go语言有gorountine和channel,而更重要的是因为Go语言的类型系统,更是因为Go语言的接口。Go语言的编程哲学因为有接口而趋于完美。 C++,Java 使用"侵入式"接口,主要表现在实现类需要明确声明自己实现了某个接口。这种强制性的接口继承方式是面向对...阅读全文

博文 2015-06-18 17:04:35 Crazy__Programmer

Effective Go

自:https://golang.org/doc/effective_go.html Effective Go IntroductionExamplesFormattingCommentaryNamesPackage namesGettersInterface namesMixedCapsSemicolonsControl structuresIfRedeclaration and reassignmentForSwitchType switchFunctionsMultiple return valuesNamed result parametersDeferDataAllocation with newConstructors and composite literalsAllocati...阅读全文

博文 2014-12-01 00:00:01 leonzhouwei

go语言之http

go语言http 1、net/http 包提供的 http.ListenAndServe() 方法,在指定的地址监听该方法用于在指定的 TCP 网络地址 addr 进行监听,然后调用服务端处理程序来处理传入的连 接请求。该方法有两个参数:第一个参数 addr 即监听地址;第二个参数表示服务端处理程序, 通常为空,这意味着服务端调用 http.DefaultServeMux 进行处理,而服务端编写的业务逻 辑处理程序 http.Handle() 或 http.HandleFunc() 默认注入 http.DefaultServeMux 中。2.处理https请求 func ListenAndServeTLS(addr string, certFile string, keyFile strin...阅读全文

博文 2018-11-14 18:35:09 PowerMichael

Golang http.NewRequest GET带Header获取远程网页,并解析gzip压缩

最近小研究了一下GO语言,试着自己写了一个GET获取远程网页的例子。代码如下: func loginPre1() map[string]interface{} { client := &http.Client{} reqest, err := http.NewRequest("GET", "http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=Z3V5dWV0ZnRiJTQwMTYzLmNvbQ%3D%3D&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.5)&_=", nil) if err != ni...阅读全文

博文 2015-06-17 20:18:52 u011509543

Go语言net/http 解读.

Http包提供实现HTTP客户端和服务端的方法与函数。 Get、Head、Post、PostForm配合使用实现HTTP请求: resp, err := http.Get("http://example.com/") resp, err := http.Post("http://example.com/upload", "image/jpeg", &buf) resp, err := http.PostForm("http://example.com/form",url.Values{"key": {"Value"}, "id": {"123"}}) 使用结束后,应该关闭客户端的响应体: resp, err := http.Get("http://example.com/") if err ...阅读全文

博文 2015-09-24 13:00:00 fyxichen

实现一个代理服务

在天朝做程序员比较让人蛋疼,比如你想用GOOGLE,你就很蛋疼。原因大家都懂。 然后呢,一开始自己在用GOAGENT, VPN, SSH, ShadowSocks等程序,GOAGENT和SHADOWSOCKS都是非常优秀的。而自己在很早刚开始接触计算机的时候就有想法自己写一个代理程序,因为各种各样的原因总是没去做,或者说自己的需求总是能够被满足,所以没什么动力。但是自从学GO语言后,网络程序的开发变的没有之前做C/C++时那么蛋疼了,所以试着自己写一个代理程序,然后也贯彻Eating your own dog food的实践。这里把一些心得总结记录下。GITHUB地址:https://github.com/eahydra/socks SOCKS5协议 刚开始的时候,是想着做HTTP代理,但是...阅读全文

博文 2014-10-07 09:20:13 concurrency

golang的select典型用法

golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。 示例: ch1 := make (chan int, 1) ch2 := make (chan int, 1) ... select { case <-ch1: fmt.Println("ch1 pop one element") case <-ch2: fmt.Println("ch2 pop one element") } 注意到 select 的代码形式和 switch 非常相似, 不过 select 的 case 里的操作语句只能是【IO 操作】 。 此示例里面 select 会一直等待等到某个 case 语句完成, 也就是等到成功从...阅读全文

博文 2015-02-15 18:23:33 YanyiWu

用Go语言进行ajax回传

一、后端部分 要想使用ajax,先要准备一个func (http.ResponseWriter, *http.Request)类型的函数来处理前端发过来的请求。 func OnAjax(res http.ResponseWriter, req *http.Request) { io.WriteString(res, "这是从后台发送的数据") } 接下来,要把一个网址和它对应起来,例如主页下的“/ajax”: http.HandleFunc("/ajax", OnAjax) 二、HTML部分 网页上的内容很简单,只有一个按钮和一个文字输入框。 阅读全文

博文 2015-03-24 15:00:01 独立风华

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

Golang之bytes.buffer学习笔记

bytes.buffer是一个缓冲byte类型的缓冲器存放着都是byte Buffer 是 bytes 包中的一个 type Buffer struct{…} A buffer is a variable-sized buffer of bytes with Read and Write methods. The zero value for Buffer is an empty buffer ready to use. (是一个变长的 buffer,具有 Read 和Write 方法。 Buffer 的 零值 是一个 空的 buffer,但是可以使用) Buffer 就像一个集装箱容器,可以存东西,取东西(存取数据) 创建 一个 Buffer (其实底层就是一个 []byte, 字节切片)...阅读全文

博文 2016-02-29 23:00:01 luomoshusheng

golang中archive/zip包用法

archive/zip包提供了zip归档文件的读写操作。 在对zip包进行介绍之前,先说明一下zip和tar的区别。 二者都是对文件进行归档,不进行压缩。并且二者使用平台不同,对于 Windows 平台而言,最常用的格式是 zip 和 rar,国内大多数是用 rar,国外大多数是用 zip。而对于类 Unix 平台而言,常用的格式是 tar 和 tar.gz,zip 比较少一些,rar 则几乎没有。 zip 格式是开放且免费的,所以广泛使用在 Windows、Linux、MacOS 平台,要说 zip 有什么缺点的话,就是它的压缩率并不是很高,不如 rar及 tar.gz 等格式。 严格的说,tar 只是一种打包格式,并不对文件进行压缩,主要是为了便于文件的管理,所以打包后的文档大小一般远远...阅读全文

博文 2015-11-12 23:00:03 chenbaoke

go语言 获取post方式json

正在学习go语言,看了一段时间的文档,想自己写个服务器,在获取接口数据的时候发现获取数据,格式为"form-data"的数据最简单, 传入post json数据:{"username":"","password":"123456"} req.PostFormreq.Header.Get("Content-Type") req.Host req.Form req.FormValue("username") req.FormValue("password") 获取"application/json"的时候,需要处理一下(以下只获取string): pack...阅读全文

博文 2015-12-22 04:00:03 aqiang912

Go语言 你可能不知道的十个技巧

1. 匿名结构体 全局组合 1 2 3 4 5 var config struct {//定义一个用于全局配置结构体 APIKey string OAuthConfig oauth.Config } config.APIKey = "BADC0C0A" 数据模板 1 2 3 4 5 6 7 8 data := struct {//匿名结构体的定义 Title string Users []*User }{//同时初始化 title, users, } err := tmpl.Execute(w, data) (比map[string]interface{}消耗更小和更安全) 测试表(用作测试数据构造) 1 2 3 4 5 6 7 8 9 10 var indexRuneTests = []s...阅读全文

博文 2014-10-10 12:00:01 abv123456789

Golang使用lxn/walk做GUI界面开发:邮件群发器

我也是刚刚使用walk这个组件,很多控件接口不熟悉,把我上次发的邮件群发器修改成图形界面的,线程发送邮件,gob库保存数据等。只提供作学习交流,仅供参考(界面很烂)。 接下来是main.go的代码: // Multi-SendEmail project main.go package main import ( "bufio" "encoding/gob" "errors" "fmt" "io" "net/smtp" "os" "strconv" "strings" "time" ) import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative" ) type ShuJu struct { Name string Pwd ...阅读全文

博文 2014-12-20 13:00:01 一曲忧伤

打造atom成为golang开发神器

在我在Windows系统上开发的日子里,我使用IDE开发数年之久,例如Visual Basic IDE, Borland Delphi IDE, Visual C++ 和最后的Visual Studio;但当我在大约10年前转到Mac OS X下开发后,我放弃了上述所有的IDE。 我刚进入Mac编程世界的时候使用的是当时表现极好的Textmate编辑器。它是一个开发代码飞快的编辑器,拥有很好的语法高亮,拓展模块以及代码片段(code snippets),让我再次感觉非常高产。经过几年的衰退期,由于它没有继续更新了,很多人转向了Sublime Text和传统的VIM编辑器了。 Atom刚出来的时候我尝试使用了一下,但当时它并没有准备好。而最近几天它正式发布官方1.0版本后我决定再次试用一下,我...阅读全文

博文 2016-02-04 07:00:03 sweetvvck

Go语言http.Get()超时设置

本文中的方案是有缺陷的,本文目前只当成历史记录,完整方案请参考(这篇)[http://1234n.com/?post/mwsw2r] Go自带的http包中提供了很完整的HTTP客户端和服务端功能。最近项目有几个需求需要从游戏服务端发起HTTP请求来调用运营商提供的接口。用Go语言实现起来超简单,http.Get()调一下就行了。 但是,http.Get()是没提供参数让调用者设置连接和读写的超时,项目在线上就遇到了永久阻塞在http.Get()不返回的情况。 上网找了一下资料,最后解决了这个问题,以下是试验代码,先贴代码再分析原理(gist连接): // // How to set timeout for http.Get() in golang // package main impor...阅读全文

博文 2015-02-06 11:18:37 达达

grpc加密TLS初体验(go、java版本)

grpc加密TLS初体验(go、java版本) grpc-go、java的安装编译helloworld可以参考如下文章 http://my.oschina.net/ysh3940/blog/403591 openssl的安装、生成秘钥证书可以参考如下文章 http://my.oschina.net/ysh3940/blog/464208 示例代码go版本 服务端代码 package main import ( "fmt" "log" "net" pb "github.com/grpc/grpc-common/go/helloworld" "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/cr...阅读全文

博文 2015-06-10 16:00:00 晓阳

记golang数据库查询封装的坑

前文 golang接触也有一段时间,项目中有用到web api,基本上就是post json格式的,本想用java来写,刚下手想到java太臃肿,各种繁琐。 觉得用golang小试一把,于是github一把,还是发现很多go rest 插件,选了一个https://github.com/ant0ine/go-json-rest 一根烟后,go-json-rest demo开始跑起来,使用curl命令模拟了一把,正确运行。 关于go-json-rest的使用,本文不做描述,官方文档有很详细的说明 https://github.com/ant0ine/go-json-rest 正文 这是封装数据库的连接的核心代码(其实大部分是网上copy的) 此方法是将sql的查询结果封装成json格式输出(当...阅读全文

博文 2015-06-14 19:00:02 liuwenhan999

golang产生guid

labix.org/v2/mgo/bson 包虽然是MongoDB的golang实现,其中产生唯一ID的算法是独立的,不依赖MongoDB, 提炼这部分的代码如下: package main import ( "crypto/md5" "crypto/rand" "encoding/binary" "encoding/hex" "fmt" "io" "os" "sync/atomic" "time" ) // objectIdCounter is atomically incremented when generating a new ObjectId // using NewObjectId() function. It's used as a counter part of an id....阅读全文

博文 2015-01-30 03:00:00 ghj1976

golang HTTP客户端

Get, Head, Post, and PostForm 可以构成 HTTP (or HTTPS) requests: resp, err := http.Get("http://example.com/") ... resp, err := http.Post("http://example.com/upload", "image/jpeg", &buf) ... resp, err := http.PostForm("http://example.com/form", url.Values{"key": {"Value"}, "id": {"123"}}) 客户端必须关闭response的body: resp, err := http.Get("http://example.com/"...阅读全文

博文 2014-10-04 19:26:08 ggaaooppeennngg

Golang学习笔记--log包

个人站:http://www.cloudnoter.com/?p=137 一、快速使用 Golang的log包短小精悍,可以非常轻松的实现日志打印转存功能。不用多说,log支持并发操作(即协程安全-相对于JAVA中的线程安全而言),其结构定义如下: type Logger struct { mu sync.Mutex // ensures atomic writes; protects the following fields prefix string // prefix to write at beginning of each line // 日志行前缀 flag int // properties // 日志打印格式标志,用于指定每行日志的打印格式 out io.Writer // ...阅读全文

博文 2015-06-17 20:03:44 cza55007

Go实战--golang中执行cron job定时任务(robfig/cron和jasonlvhit/gocron)

生命不止,继续 go go go !!! 今天,跟大家分享的是在golang中执行定时任务,主要介绍两个github上的开源库的使用。 Linux下crontab crontab 命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。 该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。 该词来源于希腊语chronos(χρόνος),原意是时间。 通常,crontab储存的指令被守护进程激活,crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。 crontab文件包含送交cron守护进程的一系列作业和指令。每个用户可以拥有自己的crontab文件;同时,操作系统保存一个针对整个系统的cr...阅读全文

博文 2017-09-08 08:31:02 wangshubo1989

golang 监听端口

package main import ( "fmt" "log" "net" "bufio" "io" ) func handleConnection(conn net.Conn) { br := bufio.NewReader(conn) for{ data, err := br.ReadString('\n') if err == io.EOF{ break } fmt.Printf("%s", data) fmt.Fprintf(conn, "OK\n") } conn.Close() } func main() { ln, err := net.Listen("tcp", ":8092") if err != nil { panic(err) } for { conn, err :...阅读全文

博文 2015-06-17 20:17:47 cauckfgf

Golang 如何从socket读出所有数据

第一种: func read(conn *net.Conn) error { defer conn.Close() buf := make([]byte, 0, 4096) len := 0 for { n, err := conn.Read(buf[len:]) if n > 0 { len += n } if err != nil { if err != io.EOF { //Error Handler } break } } // buf[:len] is the content } 第二种,更给力的一种方法: func read2(conn *net.Conn) error { defer conn.Close() var buf bytes.Buffer _, err := io....阅读全文

博文 2015-04-10 03:00:01 cobbliu

golang解析http multipart/form的三种方式

multipart/form-data 顾名思义可以上传多个form-data 并且用分隔符进行分割,多用于文件上传1. http multipart/form-data 请求样例POST /handle HTTP/1.1 Host: localhost:8080 Connection: keep-alive Content-Length: 182537 Cache-Control: max-age=0 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryWdDAe6hxfa4nl2IgAccept: text/html,application/xhtml+xml,application/xml;q=0.9,im...阅读全文

博文 2018-08-09 16:35:58 暮色伊人

Golang Web文件上传

// fileUpload project main.go package main import ( "fmt" "html/template" "io" "log" "net/http" "os" ) var buf []byte func upload(w http.ResponseWriter, r *http.Request) { r.ParseForm() if r.Method == "GET" { t, err := template.ParseFiles("upload.gptl") checkErr(err) t.Execute(w, nil) } else { file, handle, err := r.FormFile("file") checkErr(err) f...阅读全文

博文 2015-02-12 19:00:01 未来还没来

python调用Go代码

Go 1.5发布了,其中包含了一个特性:可以编译生成动态链接库,经试验,生成的.so文件可以被python加载并调用。下面举个例子: 先写一个go文件main.go: package main import "C" //export Sum func Sum(a, b int) int { return a + b } func main() {} 然后编译go build -buildmode=c-shared -o sum.so main.go,会得到一个sum.so和一个sum.h。然后用下面的python代码就可以调用Go代码中的Sum()函数了: #!/usr/bin/env python import ctypes lib = ctypes.CDLL('./sum.so') pr...阅读全文

博文 2015-09-11 11:00:00 yhcharles

golang 标准库io/ioutil,读取文件,生成临时目录/文件

1.读取目录 list, err := ioutil.ReadDir("DIR")//要读取的目录地址DIR,得到列表 if err != nil { fmt.Println("read dir error") return } for _, info := range list { //遍历目录下的内容,获取文件详情,同os.Stat(filename)获取的信息 info.Name()//文件名 info.Mode()//文件权限 info.Size()//文件大小 info.ModTime()//文件修改时间 info.Sys()//系统信息 if info.IsDir() == true { fmt.Println("是目录") } } 2.读取文件 data, err := iou...阅读全文

博文 2015-03-23 14:00:00 benlightning

golang html/template

template包(html/template)实现了数据驱动的模板,用于生成可对抗代码注入的安全HTML输出。本包提供了和text/template包相同的接口,无论何时当输出是HTML的时候都应使用本包。 main.go package main import ( "html/template" "io/ioutil" "os" "time" "fmt" ) func main() { t := template.New("第一个模板").Delims("[[", "]]") //创建一个模板,设置模板边界 t, _ = t.Parse("hello,[[.UserName]]\n") //解析模板文件 data := map[string]interface{}{"UserName":...阅读全文

博文 2015-10-06 12:00:02 别人说我名字很长

golang实现tcp通信例子

tcp/udp ip通信是当前重要的通信方式。 当然对于golang开发者而言,实现tcp通信也是必要的。本文的内容主要是基于《Go语言四十二章经》简书地址:https://www.jianshu.com/nb/29056963的详细讲解 本文的例子分为服务端与客户端两部分: 服务端: package main import ( "bufio" "fmt" "io" "net" "time" ) //tcp server 服务端代码 func main() { //定义一个tcp断点 var tcpAddr *net.TCPAddr //通过ResolveTCPAddr实例一个具体的tcp断点 tcpAddr,_ = net.ResolveTCPAddr("tcp","127.0.0.1:9...阅读全文

博文 2019-02-03 19:34:43 乐乐J

go语言公共库goredis

golang redis client, bufferd connection, connection pool, support all redis commands, 欢迎大家批评指正,更欢迎大家加入进来。 #### Create a new conn? c, e := Dial("127.0.0.1:6379", pwd, CTimeout, RTimeout, WTimeout, alive, *pool) if e != nil { println(e.Error()) return } 如果redis不需要AUTH认证, password ="" #### A Redis Command. c.GET("mykey") c.SA...阅读全文

开源项目 2014-11-04 11:15:41 翟羽行

golang 实现tcp转发代理

package main import ( "flag" "fmt" "io" "net" "os" "strings" "sync" ) var lock sync.Mutex var trueList []string var ip string var list string func main() { flag.StringVar(&ip, "l", ":9897", "-l=0.0.0.0:9897 指定服务监听的端口") flag.StringVar(&list, "d", "127.0.0.1:1789,127.0.0.1:1788", "-d=127.0.0.1:1789,127.0.0.1:1788 指定后端的IP和端口,多个用','隔开") flag.Parse() tr...阅读全文

博文 2016-06-08 20:00:00 fyxichen