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

golang中net/http包用法

http包包含http客户端和服务端的实现,利用Get,Head,Post,以及PostForm实现HTTP或者HTTPS的请求. 当客户端使用完response body后必须使用close对其进行关闭.如下所示 resp, err := http.Get("http://example.com/") if err != nil { // handle error } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) // ... 变量: 以下错误是http server使用的 var ( ErrHeaderTooLong = &ProtocolError{"header too long"} ErrShortBo...阅读全文

博文 2015-03-26 03:00:01 msnsj

golang fmt.printf()

package main import "fmt" import "os" type point struct { x, y int } func main() { //Go 为常规 Go 值的格式化设计提供了多种打印方式。例如,这里打印了 point 结构体的一个实例。 p := point{1, 2} fmt.Printf("%v\n", p) // {1 2} //如果值是一个结构体,%+v 的格式化输出内容将包括结构体的字段名。 fmt.Printf("%+v\n", p) // {x:1 y:2} //%#v 形式则输出这个值的 Go 语法表示。例如,值的运行源代码片段。 fmt.Printf("%#v\n", p) // main.point{x:1, y:2} //需要打印值的...阅读全文

博文 2015-04-21 03:00:01 benlightning

Go的reflect机制和reflect包

Go的reflect机制和reflect包 概述 虽然Go是静态语言,然而还是提供了reflect机制,并且定义了reflect包来辅助反射处理。在reflect包中,最重要的两个类型就是Type和Value,分别从类型、值的角度来描述一个Go对象。 Type类型是一个接口,这个接口实现了String() string方法。Value类型是一个结构,但是并未定义任何导出字段,同样定义了String() string方法。 使用如下语句来导入reflect包 import "reflect" 注意: 1.本文中出现在类型章节的函数,都是Type的方法。由于接口的特殊性,无法明确其receiver是指针还是值,所以并未显示其receiver,但都是有receiver的 2.很多方法都有要求,如果...阅读全文

博文 2014-10-11 11:00:06 fighterlyt

Go_Json_Unmarshal_Marshal

Go按照RFC 4627的标准实现了一个json编解码的标准库 func Unmarshal(data []byte, v interface{}) error Unmarshal用于反序列化json的函数 根据data将数据反序列化到传入的对象中 仔细查看代码中的四种情况 1 将json反序列化成struct对象 2 将json反序列化到可以存储struct的slice中 3 将json 反序列化到map中 4 将json反序列化到slice中 package main import ( "encoding/json" "fmt" ) func main() { type Person struct { Name string Age int Gender bool } //unmarsh...阅读全文

博文 2014-10-31 14:00:09 u012807459

golang json 处理的一些例子代码

json 处理的例子代码, 解析结果看后面注释。 package main import "encoding/json" import "fmt" import "os" type Response1 struct { Page int Fruits []string } type Response2 struct { Page int `json:"page"` Fruits []string `json:"fruits"` } type CommonArg struct { SessionId int64 `json:",string"` Op string `json:"Op,omitempty"` AppId string `json:"appId,omitempty"` Onlin...阅读全文

博文 2015-02-10 03:00:00 ghj1976

GO 获取时间的年份、月份以及日期

网上很多资料提供time将时间戳转成字符串的例子,但如何将获得的时间分为年、月、日分别展示,例如: ,上面显示的是日期,下面显示的是月份。作为初学者,表示网上的资料有点看不懂,记录一下,还望斧正。 首先要获取一个Time类型的变量,平时要获取现在的时间的话,直接使用now即可,但若是从数据库中读取的数据应当如何呢?下面叙述: 直接获取系统时间 year:=time.Now().Year() month:=time.Now().Month()//time.Now().Month().String() day:=time.Now().Day() 引用数据库中时间数据 month = time.Unix(dynamic.UpdateTime/1000, 0).Month().String() da...阅读全文

博文 2015-10-24 21:00:06 dengpei187

一个新颖简便的golang orm . 容易比较容易上手。

About 一个数据库ORM. How to use? Insert go get github.com/ablegao/orm 例子 //引用模块 import "github.com/ablegao/orm" //mysql 驱动 import _ "github.com/go-sql-driver/mysql" //建立连接 // 参数分别为 名称 , 驱动, 连接字符串 // 注:必须包含一个default 连接, 作为默认连接。 orm.NewDatabase("default" , "mysql" , "user:passwd@ip/database?charset=utf8") //建立一个数据模型。 type UserInfo struct { orm.Object Id i...阅读全文

博文 2015-01-01 08:00:01 Able

go操作json,注意json的嵌套、数组

package main import ( "encoding/json" "fmt" "os" ) type ConfigStruct struct { Host string `json:"host"` Port int `json:"port"` AnalyticsFile string `json:"analytics_file"` StaticFileVersion int `json:"static_file_version"` StaticDir string `json:"static_dir"` TemplatesDir string `json:"templates_dir"` SerTcpSocketHost string `json:"serTcpSocketHost...阅读全文

博文 2014-10-04 19:27:31 max佩恩

golang - gorm

gorm github、 gitbook 概述 package main import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) type Product struct { ID uint `gorm:"primary_key"` Code string Price uint } func main() { db,err := gorm.Open("mysql","root:root@tcp(localhost:3306)/gorm") if err != nil { panic("failed to connect database") } defer db.Close() // 自动迁移表...阅读全文

博文 2017-06-02 15:04:12 中柠檬

xorm - 课时 1:常见用法指导

注意事项 本博客隶属于 xorm - 课时 1:常见用法指导 请注意配套使用。 本博文为 xorm - Go 语言 ORM 的配套博客,旨在通过文字结合代码示例对该库的使用方法和案例进行讲解,便于各位同学更好地使用和深入了解。 库简介 xorm 是一款针对 Go 语言的 ORM 第三方库,特点是提供简单但丰富实用的 API 来完成对数据库的各类操作。该库支持包括 MySQL、PostgreSQL、SQLite3 和 MsSQL 在内的主流数据库,其在支持链式操作的基础上,还允许结合 SQL 语句进行混合处理。另外,支持 session 事务和回滚以及乐观锁也是使得该库逐渐流行的原因之一。 下载安装 您可以通过以下两种方式下载安装 xorm: gopm get github.com/go-xo...阅读全文

博文 2014-10-17 16:51:59 无闻

google go 模板处理

Go模板使用 在Go语言中,使用"html/template"包来进行模板处理,使用Parse、ParseFile、Execute等方法加载模板。例子: package main import ( "html/template" "os" ) type Actor struct { UserName string } func tpl_merger_structdata() { t := template.New("struct data demo template") //创建一个模板 t, _ = t.Parse("hello, {{.UserName}}! \n") //解析模板文件 actor := Actor{UserName: "jsrush@structMap"} // 创建一...阅读全文

博文 2014-12-05 14:00:01 xiangtaoxiangtao

Go语言 获取get、post参数

在贴代码之前如果能先理解一下golang http.request的三个属性Form、PostForm、MultipartForm应该能较好的理解代码,下面摘录一下。 以上简要翻译一下: Form:存储了post、put和get参数,在使用之前需要调用ParseForm方法。 PostForm:存储了post、put参数,在使用之前需要调用ParseForm方法。 MultipartForm:存储了包含了文件上传的表单的post参数,在使用前需要调用ParseMultipartForm方法。 一、获取GET参数 query := req.URL.Query() get_act := query["act"][0] fmt.Println(get_act) 二、获取POST参数 2.1 获取单...阅读全文

博文 2016-02-01 17:00:01 project

golang面向对象总结

[plain] view plaincopy type $name struct{ property01 int property02 int } Golang里面的方法和接口都是基于这里type *** struct创建的类型,这里其实可以理解为: [php] view plaincopy class $name { public int property01; public int property02; } 类型就是类。 所以我们说是类型的某个方法,类型实现了某个接口。 类型是属性的集合,接口是方法的集合 函数的定义:func $funcName ( ) ( ){} 方法的定义:func ( ) $funcName ( ) ( ){} Func (成员变量 类型) funname(局部...阅读全文

博文 2015-06-17 20:02:17 erlang_team

Go语言黑魔法

今天我要教大家一些无用技能,也可以叫它奇技淫巧或者黑魔法。用得好可以提升性能,用得不好就会招来恶魔,嘿嘿。黑魔法导论为了让大家在学习了基础黑魔法之后能有所悟,在必要的时候能创造出本文传授之外的属于自己的魔法,这里需要先给大家打好基础。学习Go语言黑魔法之前,需要先看清Go世界的本质,你才能获得像Neo一样的能力。在Go语言中,Slice本质是什么呢?是一个reflect.SliceHeader结构体和这个结构体中Data字段所指向的内存。String本质是什么呢?是一个reflect.StringHeader结构体和这个结构体所指向的内存。在Go语言中,指针的本质是什么呢?是unsafe.Pointer和uintptr。当你清楚了它们的本质之后,你就可以随意的玩弄它们,嘿嘿嘿。第一式 - 获...阅读全文

博文 2015-04-24 10:45:46 达达

Go语言笔记:struct结构遍历

package main import ( "fmt" "reflect" ) type User struct { Id int Name string //addr string } func main(){ u := User{Id:1001, Name:"xxx"/*, addr:"xxx"*/} t := reflect.TypeOf(u) v := reflect.ValueOf(u) for k := 0; k < t.NumFiled(); k++ { fmt.Printf("%s -- %v \n", t.Filed(k).Name, v.Field(k).Interface()) } }注:当结构体中含有非导出字段时,v.Field(k).Interface()会pani...阅读全文

博文 2016-01-28 12:00:01 qdx411324962

mgo使用指南

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 GoWalkermgo/bson GoDoc GoWalkermgo/txn GoDoc GoWalker 安装 安装mgo之前请先安装Golang和MongoDB,安装过程不再赘述。 安装bzr版本工具(mgo使用Bazaar作为版本控制系统,因安装的时候需要去Bazaar拉取代码)。...阅读全文

博文 2015-06-17 20:05:22 yangzhengyi68

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

用FileInfo.sys()获取文件的详细信息

使用os.Stat()获取FileInfo类型的数据后,我们就可以获取文件的信息,但信息也限于 type FileInfo interface { Name() string // base name of the file Size() int64 // length in bytes for regular files; system-dependent for others Mode() FileMode // file mode bits ModTime() time.Time // modification time IsDir() bool ...阅读全文

golang的net/http包

package http import "net/http" http包提供了HTTP客户端和服务端的实现。 Get、Head、Post和PostForm函数发出HTTP/ HTTPS请求。 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 ...阅读全文

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

Golang之继承,多重继承(struct)

热乎的代码来了 package main import "fmt" /* 继承 一个结构体嵌到另一个结构体,称作组合 匿名和组合的区别 如果一个struct嵌套了另一个匿名结构体,那么这个结构可以直接访问匿名结构体的方法,从而实现继承 如果一个struct嵌套了另一个【有名】的结构体,那么这个模式叫做组合 如果一个struct嵌套了多个匿名结构体,那么这个结构可以直接访问多个匿名结构体的方法,从而实现多重继承 */ type Car struct { weight int name string } func (p *Car) Run() { fmt.Println("running") } type Bike struct { Car lunzi int } type Train stru...阅读全文

博文 2018-01-15 07:30:00 pyyu

golang mysql中timestamp,datetime,int类型的区别与优劣

golang time: https://golang.org/pkg/time/ golang中time包用法 http://blog.csdn.net/chenbaoke/article/details/41519193 首先 DATETIM和TIMESTAMP类型所占的存储空间不同,前者8个字节,后者4个字节,这样造成的后果是两者能表示的时间范围不同。前者范围为1000-01-01 00:00:00 ~ 9999-12-31 23:59:59,后者范围为1970-01-01 08:00:01到2038-01-19 11:14:07。所以可以看到TIMESTAMP支持的范围比DATATIME要小,容易出现超出的情况. 其次,TIMESTAMP类型在默认情况下,insert、update ...阅读全文

博文 2016-03-04 08:00:01 scut1135

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 基础语法

自:http://studygolang.com/topics/548 例子Packages.go: package main import ( "fmt" "math/rand" ) func add(x int, y int) int { return x + y } func main() { fmt.Println("My favorite number is", rand.Intn(10)) fmt.Println(add(42, 13)) } 包:每个 Go 程序都是由包(package)组成的,程序运行的入口是包 main。 导入:这个代码用圆括号组合了导入,这是“打包”导入语句。同样可以编写多个导入语句,例如: import "fmt" import "math" 这个程序使...阅读全文

博文 2015-02-28 03:00:01 sevenyuan

Go 系列教程 —— 16. 结构体

欢迎来到 [Golang 系列教程](/subject/2)的第 16 个教程。 ### 什么是结构体? 结构体是用户定义的类型,表示若干个字段(Field)的集合。有时应该把数据整合在一起,而不是让这些数据没有联系。这种情况下可以使用结构体。 例如,一个职员有 `firstName`、`lastName` 和 `age` 三个属性,而把这些属性组合在一个结构体 `employee` 中就很合理。 ### 结构体的声明 ```go type Employee struct { firstName string lastName string age int } ``` 在上面的代码片段里,声明了一个结构体类型 `Employee`,它有 `firstName`、`lastName` 和 `a...阅读全文

博文 2018-01-22 17:52:48 heyulong

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

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...阅读全文

golang学习之struct

结构体定义的一般方式如下: type identifier struct { field1 type1 field2 type2 ... } type T struct {a, b int} 也是合法的语法,它更适用于简单的结构体。 var t *T t = new(T) 变量 t 是一个指向 T的指针,此时结构体字段的值是它们所属类型的零值,使用 new 函数给一个新的结构体变量分配内存,它返回指向已分配内存的指针。 无论变量是一个结构体类型还是一个结构体类型指针,都使用同样的 选择器符(selector-notation) 来引用结构体的字段,即: type myStruct struct { i int } var v myStruct // v是结构体类型变量 var p *mySt...阅读全文

博文 2016-06-15 09:00:00 caiya928

golang sort 包使用,及三个简单排序算法冒泡,插入,选择 练习

sort 包的核心类型是 sort.Interface: type Interface interface { // Len is the number of elements in the collection. Len() int // Less reports whether the element with // index i should sort before the element with index j. Less(i, j int) bool // Swap swaps the elements with indexes i and j. Swap(i, j int) } 接口 是golang 的很cool 的特性,rob pike 说接口有点类似uinx pipe,把...阅读全文

博文 2015-01-22 17:00:11 yujian0231

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

HBase Go客户端Row构造注意事项

1. Hbase 的Go客户端语言使用方法 2. Hbase的Row使用注意事项 2.1. Row的前几个字段尽量散列 2.2. Row的排序是把所有Row中的字符做字典排序 我们最近在一个项目中使用Hbase做日志数据的存储,在其之上做一些数据分析工作,相对java来说,团队成员对Go的使用更熟练,所以自然使用Go作为Client的开发语言, 以前从来没有跟Hbase打过交道,本来一个比较简单的任务,愣是磕磕绊绊做了好久。。。 本文只说说Hbase的Row构造时的注意事项 1 Hbase 的Go客户端语言使用方法 Hbase官方没有Go的客户端,但是它提供了thrift服务,我们可以用Go语言开发一个thrift 的client,通过向hbase的thrift server发送RPC请求,...阅读全文

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

golang利用gob序列化struct对象保存到本地

golang可以通过json或gob来序列化struct对象,虽然json的序列化更为通用,但利用gob编码可以实现json所不能支持的struct的方法序列化,利用gob包序列化struct保存到本地也十分简单. gob包实现的序列化struct对象保存到本地 务必注意的是golang序列化有个小坑,就是struct里的字段必须要可导出也就是首字母大写 package main import ( "encoding/gob" "fmt" "os" ) type User struct { Id int Name string } func (this *User) Say() string { return this.Name + ` hello world ! ` } func main...阅读全文

博文 2015-04-22 03:00:00 reflectsky

使用Golang开发微信公众平台-接收文本消息

使用Golang开发微信公众平台-接收文本消息 十二 20 bigwhite技术志 Amazon, CDATA, Debug, EC2, Go, Golang, http, ngrok, Opensource, Tcpdump, Wechat, wireshark, XML, 公众平台, 开放平台, 开源, 微信, 服务号, 订阅号, 调试 2 Comments 一旦接入验证成功,成为正式开发者,你可能会迫不及待地想通过手机微信发送一条"Hello, Wechat”到你的公众号服务器。不过上一篇的那个程序还无法处理手机提交的文本消息,本篇将介绍如何用Golang编写公众号程序来接收手机端发送的 文本消息以及回复响应消息。 根据微信公众平台开发文档中描述:“当普通微信用户向公众账号发消息时,微...阅读全文

博文 2015-01-20 09:24:44 bigwhite

Go语法

Go基础 变量 基本结构:var 变量名 变量类型 = 值 注:_(下划线)是个特殊的变量名,任何赋予它的值都会被丢弃 package main /* 全局变量 */ // 仅声明, 必要有var和变量类型 var a int var b, c int // 声明并初始化,变量类型可省略 var d int = 1 var e, f int = 1, 2 var g = 1 // 自动推断类型 var h, i = 1, "string" // 类型可以不一样 func main() { /* 局部变量特有的声明方式 */ j := 1 k, l := 1, 2 } 常量 常量可定义为数值、布尔值或字符串等类型。 /* 全局和局部声明方式相同 */ const a int = 1 const...阅读全文

博文 2015-04-03 18:00:19 LeoHsiun

Go 系列教程 —— 34. 反射

![reflection](https://raw.githubusercontent.com/studygolang/gctt-images/master/golang-series/reflection-golang-3.png) 欢迎来到 [Golang 系列教程](https://studygolang.com/subject/2)的第 34 篇。 反射是 Go 语言的高级主题之一。我会尽可能让它变得简单易懂。 本教程分为如下小节。 - 什么是反射? - 为何需要检查变量,确定变量的类型? - reflect 包 - reflect.Type 和 reflect.Value - reflect.Kind - NumField() 和 Field() 方法 - Int() 和 Stri...阅读全文

博文 2018-06-13 17:44:38 heyulong

go语言实现继承功能

go语言结构体有一个特殊的用法:结构体内嵌一个其他类型的结构体指针,就可以使用内嵌结构体的方法。看代码(摘自studygolang的源码,数据库模块,dao.go) type Dao struct { *sql.DB // 构造sql语句相关 tablename string where string whereVal []interface{} // where条件对应中字段对应的值 limit string order string // 插入需要 columns []string // 需要插入数据的字段...阅读全文

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

Go 编程语言规范

自:http://ilovers.sinaapp.com/doc/golang-specification.html 英语:http://golang.org/ref/speC Go 编程语言规范 2013年05月08日版本 简介记号源代码表示字符字母和数字词法元素注释符号分号标识符关键字操作符/运算符和分隔符整型值浮点值虚数值分符值字符串值常量类型方法集布尔类型数值类型字符串类型数组类型分片类型结构体类型指针类型函数类型接口类型映射类型管道类型类型和值的性质类型一致转换块声明和作用域标号作用域Blank identifier预声明标识符导出的标识符唯一标识符常量声明Iota类型声明变量声明短变量声明函数声明方法声明表达式操作数合法标识符复合值函数值主表达式Selectors下标分片类型推断...阅读全文

博文 2014-10-09 16:00:05 maimang1001

golang的反射-Type

反射包主要有一个接口:type,和一个结构value; type接口 commonType类型实现了type接口,下面是type中的各类型关系 commonType>unCommonType>method arrayType|chanType|funcType|interfaceType|mapType|ptrType|sliceType >commonType ptrMap>n*commonType 其他结构 Method结构 MethodByName()和Method()会返回这种类型 type Method struct { Name string PkgPath string Type Type // method type Func Value // func with recei...阅读全文

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

Go 系列教程 —— 31. 自定义错误

![custom errors](https://raw.githubusercontent.com/studygolang/gctt-images/master/golang-series/custom-errors-golang-1.png) 欢迎来到 [Golang 系列教程](https://studygolang.com/subject/2)的第 31 篇。 在[上一教程](https://studygolang.com/articles/12724)里,我们学习了 Go 中的错误是如何表示的,并学习了如何处理标准库里的错误。我们还学习了从标准库的错误中提取更多的信息。 在本教程中,我们会学习如何创建我们自己的自定义错误,并在我们创建的函数和包中使用它。我们会使用与标准库中相同的技...阅读全文

博文 2018-04-12 22:09:51 heyulong

golang中net/http包用法

1. 前言 http包包含http客户端和服务端的实现,利用Get,Head,Post,以及PostForm实现HTTP或者HTTPS的请求. 2. 本文分析内容安排 函数 结构 3. 函数 3.1 服务端函数 func Handle(pattern string, handler Handler)将handler按照指定的格式注册到DefaultServeMux,ServeMux解释了模式匹配规则 func HandleFunc(pattern string, handler func(ResponseWriter, *Request))同上,主要用来实现动态文件内容的展示,这点与ServerFile()不同的地方。 func ListenAndServe(addr string, han...阅读全文

博文 2015-12-16 11:00:53 yuanfang_way

filebeat_config 介绍

title: filebeat config date: 2017-06-11 03:22:31 categories: elk tags: filebeat Filebeat Prospector filebeat.prospectors: - input_type: log paths: - /var/log/apache/httpd-*.log document_type: apache - input_type: log paths: - /var/log/messages - /var/log/*.log Filebeat Options input_type: log|stdin 指定输入类型 paths 支持基本的正则,所有golang glob都支持,支持/var/log/*...阅读全文

博文 2017-06-11 04:07:11 budongshu

golang--gorilla/mux,强大的URL路由和调度器

标题完全是翻译,gorilla/mux is a powerful URL router and dispatcher,不过个人觉得翻译不到位,望指正。 gorilla/mux包是加一层结构,在这个结构里面配置客户端访问时需要的各种参数,然后传给http.Handle()函数。如果各位有看我的博客,就会了解它的结构组成。先看一个它的例子: func main() { r := mux.NewRouter() r.HandleFunc("/", HomeHandler) r.HandleFunc("/products", ProductsHandler) r.HandleFunc("/articles", ArticlesHandler) http.Handle("/", r) } 可以看出,...阅读全文

博文 2014-10-04 19:26:11 getong

golang 标准库 container/ring 及 container/heap

由于目前golang 没有提供泛型机制,所以通用容器实现基本和 c 类似,golang 用 interface{} 做转接, c 用 void * 转接。 ring 包实现循环双向链表: type Ring struct { next, prev *Ring Value interface{} } 内部导出一个用户可以操作的Value 字段。 heap 包实现 binary heap : type Interface interface { sort.Interface Push(x interface{}) // add x as element Len() Pop() interface{} // remove and return element Len() - 1. } heap.I...阅读全文

博文 2015-03-18 14:00:01 yujian0231

Go struct

// xuhh_go_struct project main.go /* tips : 具有相同字段序列(字段名,类型,标签,顺序)的匿名struct 属于同一类型 struct 值类型。 赋值和传参都会复制全部内容。 struct 可以内嵌,但是不能同时内嵌同一类型和其指针类型 struct 可以匿名字段,字段包括任何类型。 struct 在内嵌多个类型的时候,需要注意如果不同类型之间拥有相同字段名的时候,调用这些类型的字段的时候 需要加上类型名。 相同的struct 可以进行 == != = 操作。 */ package main import ( . "fmt" ) type Class struct { strClassname string nClassNum int strAdr...阅读全文

博文 2015-06-18 09:09:12 xuheazx

golang笔记:unsupported driver -> Scan pair: -> *string

golang里,操作mysql数据库,使用查询语句的时候,一般的写法 rows, err := db.Query("SELECT name from table) if err != nil { return } for rows.Next() { var name string err = rows.Scan(&name) if err != nil { return } } 当查出来的字段有NULL的时候,就会报这样的错误unsupported driver -> Scan pair: -> *string 这又是由于Go语言对数据类型的严格限制。name的类型是string,所以只能接受string类型的值,而此处nil是为空的指针类型。最佳解决办法是——插入记录的时候不要...阅读全文

go-sql-driver包 实现mysql不定字段查询

go-sql-driver包是一个第三方包 下载地址http://github.com/go-sql-driver/mysql 下面直接上代码 package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { //连接数据库 db, err := sql.Open("mysql", "root:@tcp(localhost:3306)/go?charset=utf8") if err != nil { fmt.Println("连接数据库失败", err.Error()) return } defer db.Close() //查询数据库 query, err := db...阅读全文

博文 2014-10-17 08:00:01 别人说我名字很长

Go 系列教程 —— 27. 组合取代继承

欢迎来到 [Golang 系列教程](https://studygolang.com/subject/2)的第 27 篇。 Go 不支持继承,但它支持组合(Composition)。组合一般定义为“合并在一起”。汽车就是一个关于组合的例子:一辆汽车由车轮、引擎和其他各种部件组合在一起。 ## 通过嵌套结构体进行组合 在 Go 中,通过在结构体内嵌套结构体,可以实现组合。 组合的典型例子就是博客帖子。每一个博客的帖子都有标题、内容和作者信息。使用组合可以很好地表示它们。通过学习本教程后面的内容,我们会知道如何实现组合。 我们首先创建一个 `author` 结构体。 ```go package main import ( "fmt" ) type author struct { firstNam...阅读全文

博文 2018-03-25 21:42:49 heyulong