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

go语言将函数作为参数传递

go语言函数作为参数传递,目前给我的感觉几乎和C/C++一致。非常的灵活。 import "fmt" import "time" func goFunc1(f func()) { go f() } func goFunc2(f func(interface{}), i interface{}) { go f(i) } func goFunc(f interface{}, args... interface{}) { if len(args) > 1 { go f.(func(...interface{}))(args) } else if len(args) == 1 { go f.(func(interface{}))(args[0]) } else { go f.(func())() }...阅读全文

博文 2014-10-06 09:59:59 eclipser1987

Go凭什么击败C++成为证券期货行情系统的首选语言

Golang 由于其高效快速、天然支持并发的显著优势,大大降低了服务的开发门槛,使得企业更易于直接架构业务,这些特性使得越来越多的传统公司技术部门选择拥抱 Go ,并结合自身业务特点摸索出了丰富的实践经验。在由 Go 中国和七牛云联合主办的 Gopher China2017中,来自金大师的技术经理张泽武详细分享了一个使用 Go 语言开发全套证券、期货、行情处理及分发系统。项目背景是在团队成员未完全到位的情况下,使用简单易用的 Go 语言后,用三个月的时间开发完成。并在随后的项目发展中,这套系统逐步演化完善成一套自有的快速开发框架。项目故事 项目启动的时候,领导对这个行情系统有几个要求,怎么在最短的时间交付,怎么满足大量并发的请求,怎么保证低延时,把交易所的行情数据尽可能快的发到客户端。在这些...阅读全文

博文 2017-08-09 01:41:29 张泽武

golang学习的点点滴滴:指针,地址,形参,实参

学习Go语言的过程中,会发现它的指针,地址,还有函数参数跟平常我们理解的不太一样. 上代码: package main //学习指针用法 import ( "fmt" ) func main() { var i int; // i 的类型是int型 var p *int; // p 的类型是[int型的指针] i = 1; // i 的值为 1; p = &i; // p 的值为 [i的地址] fmt.Printf("i=%d;p=%d;*p=%d\n",i,p,*p); *p = 2; // *p 的值为 [[i的地址]的指针](其实就是i嘛),这行代码也就等价于 i = 2 fmt.Printf("i=%d;p=%d;*p=%d\n",i,p,*p); i = 3; // 验证我的想法 ...阅读全文

博文 2014-10-04 19:27:24 亓斌哥哥

Git和Golang配置Shadowsocks代理

使用场景 golang get 很慢,需要进行httpx代理 composer很慢可以使用代理 git clone github的包时候也很慢 shadowsocks 安装 1分钟配置 点击查看 转化代理模式 ssr提供sock5代理,所以我们需要转化成http协议的代理层,golang有个工具cow,安装如下。据说目前git已经支持socks5代理,所以后面我有进行尝试socks5直接配置代理参数。包括环境参数也是同样有些软件支持socks5,我们可以按需配置 go get github.com/cyfdecyf/cow 在cow目录下提供一个配置文件rc.txt,更多需求了解【cow文档】 listen = http://127.0.0.1:7777 proxy = socks5://1...阅读全文

博文 2018-12-23 03:34:42 Godtoy

从PHP Laravel 到 Go Iris--路由篇

Laravel是我最喜欢的PHP Web开发框架,所以也希望可以在Go的Web框架中选择一个类似Laravel这样的好用又全栈的框架,刷了一下Beego, Echo , Gin, 以及Iris的文档,最终还是选择Iris,当然我是没有从性能角度考虑,只是从可以快速开发,且支持的特性全还有就是看着顺眼的心理选择了Iris,应该有不少PHPer像我一样使用Laravel同时在学习Go,所以为了便于Laravel开发者可以快速的转到Iris开发,我准备写一系列这两者框架的比较文章。 基本路由 Iris构建基本路由和Laravel的基本路由很像,都只需要一个URI与一个闭包: Laravel Route::get('foo', function () { return 'Hello World'; ...阅读全文

博文 2017-09-11 11:35:04 Ryan是菜鸟

Go 性能优化技巧 7/10

接口的用途无需多言。但这并不意味着可在任何场合使用接口,要知道通过接口调用和普通调用存在很大差别。首先,相比静态绑定,动态绑定性能要差很多;其次,运行期需额外开销,比如接口会复制对象,哪怕仅是个指针,也会在堆上增加一个需 GC 处理的目标。 ![interface1](http://studygolang.qiniudn.com/160606/77e41c5410325ac46d716440aa04820c.jpg) ![interface2](http://studygolang.qiniudn.com/160606/43618e7c15acc102b5af457514db803a.jpg) ![interface3](http://studygolang.qiniudn.com...阅读全文

内网穿透服务 一条命令搞定无公网服务

服务网站 https://www.cngrok.com 在开发小程序 公众号 等等 我们需要调用微信的api 为了方便开发 特意搭建一个内网穿透服务管理平台 支持 https http tcp https http 加密 一条命令即可穿透连接内网 远程控制路由器 或者内网设备 http https 服务 均采用gzip 压缩 只为更快的加载速度~ 为防止恶意使用 收费一元一月 服务网站 https://www.cngrok.co...阅读全文

博文 2018-10-15 17:34:39 ssstk

beego1.6.1 使用Redirect方法重定向301之后路由就失效了

登出方法 ``` func (c *IndexController) Logout() { beego.Debug("==========", 123) c.Redirect("/", 301) } ``` 第一次掉用可以生效,再次打开这个路由的话,就直接转到首页了,根本就不进方法里,也就是那个debug信息没有打印出来,如果重定向code改成302就没有这样的问题,求解决办...阅读全文

新问题:Go语言怎么初始化结构体类型数组中的指针类型呢?(原问题:Go语言怎么在结构体中定义一个指向函数的指针呢?)

type DataNode struct{ cmd *string desc *string handler func() int next *DataNode } var head = []DataNode{ {cmd:"help", desc:"cmd tips", handler:help, next:&head[1]}, {cmd:"add", desc:"addition of two numbers", handler:add, next:nil}} func main(){ //head[0].next = &head[1] //head[1].next = &head[2] //head[2].n...阅读全文

接受 interface 参数,返回 struct 在 go 中意味着什么

## 注意细节 在之前的文章中,我提到了一个关于 *accept interfaces, return structs* 的参考指南,在查看同事代码的时候经常会被问“为什么”。特别是这不是一个必须遵守的规则。这个想法的关键点以及理解什么时候妥协,在于维护项目灵活性和避免抢占抽象(译者注:“Preemptive abstractions” 并发系统中连续组件的轻量级验证方案的一种抽象技术)之间的平衡。 ![c90d04d0.png](https://raw.githubusercontent.com/studygolang/gctt-images/master/accept-interface/c90d04d0.png) ## 抢占抽象让系统变得复杂 > 除了因为太多的迂回方式所造成的问题之外...阅读全文

博文 2018-02-13 16:16:06 polaris

Google Guice

Guice (读作"juice")是超轻量级的,下一代的,为Java 5及后续版本设计的依赖注入容器。简介Java企业应用开发社区在连接对象方面花了很大功夫。你的Web应用如何访问中间层服务?你的服务如何连接到登录用户和事务管理器?关于这个问题你会发现很多通用的和特定的解决方案。有一些方案依赖于模式,另一些则使用框架。所有这些方案都会不同程度地引入一些难于测试或者程式化代码重复的问题。你马上就会看到,Guice 在这方面是全世界做得最好的:非常容易进行单元测试,最大程度的灵活性和可维护性,以及最少的代码重复。我们使用一个假想的、简单的例子来展示 Guice 优于其他一些你可能已经熟悉的经典方法的地方。下面的例子过于简单,尽管它展示了许多显而易见的优点,但其实它还远没有发挥出 Guice 的全...阅读全文

博文 2015-10-20 09:00:01 douxn

GTK+3 的 Go 绑定 gotk3

gotk3 提供 Go 绑定 GTK+3 和依赖的其他项目。每个组件都给出了用来导入包路径的子目录。以下是部分已经实施的支持库: * GTK+3 (3.6 and later) * GDK 3 (3.6 and later) * GLib 2 (2.36 and later) * Cairo (1.10 and later) 已经采取谨慎的内存管理与Go的垃圾收集器无缝工作,而无需使用或理解图形对象的浮动参考。 简单示例:

package main
import (
    "github.com/conformal/gotk3/gtk"
    ...阅读全文

liteIDE写Golang程序引用外面的package不能自动补全的问题

在使用liteIDE开发Golang程序时,会出现Golang自带的package可以自动补全,而引用外面的package则不能自动补全。今天终于在stackoverflow(http://stackoverflow.com/questions/19876902/liteide-no-autocomplete)找到了答案:在使用外面的package时,应该把package安装成功(使用go get, go install命令),才可以使用自动补全...阅读全文

博文 2015-06-17 20:02:33 xiaonanAndroid

gf框架之路由控制 - 强大、灵活、高效

文章来源:http://gf.johng.cn/494375 gf框架提供了自建的非常强大的路由控制功能,支持流行的命名匹配规则及模糊匹配规则,并提供了优秀的优先级管理机制。以下是一个服务注册中使用路由控制的示例: package main import "gitee.com/johng/gf/g/net/ghttp" func main() { s := ghttp.GetServer() s.BindHandler("/:name", func(r *ghttp.Request){ r.Response.Writeln("pattern: /:name match") r.Response.Writeln(r.Get("name")) }) s.BindHandler("/:name/:...阅读全文

博文 2018-04-16 14:34:42 John

[mysql]能否动态修改当次mysql连接的Config参数

看了/src/database/sql 与 /go-sql-driver/mysql/ , 没找到能用的方法 目前需求的逻辑: 建立1次mysql connection, 若超时A秒返回, 使用timeout参数 分别执行 insert, select, delete query, `总超时`B秒返回, 使用readTimeout参数 (此处已修改/src/database/sql) 此处的`总超时`没找到对应能实现功能的方法, 目前看了一遍代码, 只能做到如下折中逻辑 connect db 超时`A`秒返回, insert 超时`B`秒返回用时B1, 总用时`A1` connect db 超时`A-A1`秒返回, select 超...阅读全文

make(map[int]string, 1) 这第二个参数 1是 map的大小?

在go的 包中显示make 第二个参数表示大小,我试着声明一个长度为1 的当长度超过1时 不应该换一块内存地址,重新存储?![111.png](https://static.studygolang.com/180130/de5e30f4c9cb18521dc9650645e2d3e5.png)![Screenshot 2018-01-30_21-17-09.png](https://static.studygolang.com/180130/99ef92273df2b4f71e62dfde99d0f874.png...阅读全文

golang面向对象

golang可以实现面向对象,C++能做的,golang基本也可以做。 1.简单继承 golang用组合来实现继承,父类实例的作为子类的匿名成员即可。 继承了父类的成员变量和成员方法。 同名的成员方法,无论完整函数签名是否相同,父类方法均被隐藏。 同名的变量,子类优先,父类的必须加上父类类型才能访问。 e.Human.SayHi() 在正常的设计中,不要出现同名的情况。 2.多重继承。 组合多个基类即可 3.多态行为 用接口实现 package main import ( "fmt" ) // abstract base type IA interface { Kaka()int } // child a type A struct{ } func (a *A)Kaka()int{ retu...阅读全文

博文 2015-06-17 20:02:15 fall221

App开发者:一个你从未体验过的自动化测试平台

“测试”在移动互联网界应该是耳熟能详的词汇了,目前几乎所有开发者在进行研发的过程中都要进行应用的测试,常用的使用模式大致有三类: 完全黑盒、基于脚本、基于录制回放 但使用过的朋友应该知道这三类模式都存在很难解决的缺陷,那么同作为开发的笔者,也是尝试、更换了无数的测试平台与工具,最终对自己的工作效率或者效果提升都不明显,而接下来,笔者将向大家推荐一款最近正在试用的一个自动化测试平台,目前来说效果还不错,经过笔者的研究和梳理总结,整理出了这个平台的构架与理念,希望各位做开发、测试的朋友能够有机会来尝试一番。 逻辑架构 ![图片 1.png](http://studygolang.qiniudn.com/170214/79ee116e9126cdad8e5a8ebe00...阅读全文

C/Golang中的值传递和指针传递

-------------------------golang---------------------------------------------- package main import "fmt" func A(m int, n []int) { m = 100 n[0] = 99 fmt.Printf("After : &m=%p,&n=%p,n=%p\n", &m, &n, n) fmt.Printf(" m=%d,n=%v\n", m, n) } func main() { m := 300 n := []int{1, 2, 3} fmt.Printf("-----------origin--------------------\n") fmt.Printf("Befter ...阅读全文

GridView自带分页 1/总页数 首页 下一页 上一页 尾页 X 页 go 实现方法

页面:

页 共阅读全文

博文 2015-10-26 12:00:01 pengxiang_px

Android 上的代码阅读器 CoderBrowserHD 修改支持 go 语言代码

我在Android上的代码阅读器用的是 https://github.com/zerob13/CoderBrowserHD 改造的版本,改造后的版本我放在 https://github.com/ghj1976/CoderBrowserHD 了。 主要的改造如下: 升级项目成 Android Studio 的项目 git 下载 https://github.com/zerob13/CoderBrowserHD 后的项目改造步骤如下: 1、Clone 到自己本地 2、Import Project (改成 Android Gradle projects ) 选择我们下载到本地的目录导入即可。 整个过程的选择,完全选择默认项。 修改导入过程中的error SDK 版本问题 第一个是 SDK 的 版本...阅读全文

博文 2016-03-01 03:00:01 ghj1976

Golang 开发企业级资源权限管理【第一步表设计】

我们做企业级系统,权限控制主要分三类。 【功能权限】:对菜单栏目进行权限控制,查询,增加,删除,修改功能,一般来说这种对资源的权限控制模型可以做到比较统一(用户、角色、资源)。 【数据权限】:哪些人能看到哪些数据,例如淘宝本人只能看自己订单,北京地区部门领导可以看到电器类部门订单, 最高领导能看到人所有订单等等。 这种跟业务高度相关,(网络上资料暂时比较少)原理主要是对SQL语句添加where 条件 【字段权限】:订单能看到哪些字段,如供应商,看不到内部价、 出厂价等信息。 (网络上资料暂时比较少)实现原理跟数据权限控制是一致的。对SQL语句添加select 条件 这次,我们主要讲解最常用的功能权限控制的实现过程,这类WEB权限控制,在任意后端语言上都可以实现Java、Golang、PHP、...阅读全文

博文 2019-10-14 10:32:56 aside section ._1OhGeD

golang rpc

rpc server端(golang版本): package main import ( "errors" "fmt" "net" "net/rpc" "net/rpc/jsonrpc" ) const ( URL = "127.0.0.1:5001" ) type Args struct { A, B int } type Arith int func (t *Arith) Add(args []Args, reply *int) error { for i := 0; i < len(args); i++ { *reply += args[i].A *reply += args[i].B } return nil } func main() { arith := new(Arith) r...阅读全文

博文 2015-10-26 18:00:11 webyh

golang的flag包

package main import ( "flag" "fmt" ) var ( root = flag.String("root", "/var/lib/docker/fakevol", "fake volumes root directory") ) func main() { wordPtr := flag.String("word", "foo", "a string") numbPtr := flag.Int("numb", 42, "an int") boolPtr := flag.Bool("fork", false, "a bool") var svar string flag.StringVar(&svar, "svar", "bar", "a string var")...阅读全文

博文 2015-08-20 14:00:01 webyh

golang学习的点点滴滴:flag包解析命令行参数

import ( "fmt" "flag" ) func main() { var in *string = flag.String("in", "infile", "input infile...") var out *string = flag.String("out", "outfile", "input outfile...") var op *string = flag.String("op", "op..", "ops...") // 命令行使用 xxx.exe -in thisisin -out thisisout -op thisisops flag.Parse() // 解析 if nil != in { fmt.Println("inFile : ", *in, " ou...阅读全文

博文 2014-10-04 19:27:45 亓斌哥哥

Django中如何实现数据库路由?

  虽然我们提供了数据库的信息,它知道怎么连接数据库,但问题是我们保存里面有很多模型,它不知道哪个模型存到哪个数据库。这就要求我们自己来指定,也就是我们自己来实现一个数据库路由。一个数据库路由是一个拥有4个方法的类,这四个方法是:   db_for_read(model, **hints)   对于该model 用哪个数据库来读。   db_for_write(model, **hints)   对于该model用哪个数据库来写。   allow_relation(obj1, obj2, **hints)   是否允许两个对象关联到数据库。   allow_migrate(db, app_label, model_name=None, **hints...阅读全文

我希望的Golang的feature

如果有下面的功能,Go可以让程序员更高效。 1. 数学类型的自动转换。现在做个整数跟浮点数的计算也要手动转类型。据说是为了更安全和可预测的代码。但是其他主流语言都支持自动转,大家早就习惯了。需要考虑类型安全的地方,该考虑的人自然会去考虑。 2. Polymorphism的支持。interface对多态的支持还是比较有限。down casting做不了有的时候还是不大方便。比如下面这段代码就编不过 type Base struct { xxxx } type Derived struct { Base } func main() { v1 := &Drived{} var v2 *Base v2 = v1 //编译不过 v2 = *Base(v1) //也不行 } 3. 更方便的数组的操作比如...阅读全文

博文 2015-12-28 00:00:00 kefeng_chen

Go语言的传参和传引用

目录[-] 传参和传引用的问题 传slice不是传引用! 什么叫传引用? 为什么传slice不是传引用? 为什么很多人误以为slice是传引用呢? 传指针和传引用是等价的吗? 所有类型的函数参数都是传值的! 那Go语言有传引用的说法吗? 什么是引用类型, 和指针有何区别/联系 ? 总结 传参和传引用的问题 很多非官方的文档和教材(包括一些已经出版的图书), 对Go语言的传参和引用的讲解 都有很多问题. 导致众多Go语言新手对Go的函数参数传参有很多误解. 而传参和传引用是编程语言的根本问题, 如果这个问题理解错误可能会导致很多问题. 传slice不是传引用! 首先, Go语言的函数调用参数全部是传值的, 包括 slice/map/chan 在内所有类型, 没有传引用的说法. 具体请看Go语言...阅读全文

博文 2015-09-15 03:00:01 sunshine-anycall

golang http测试 no-cache 对性能的影响

做了下go和java的http性能的简单比较服务端直接输出字符串使用JMeterwindows下 2000的并发,测试结果很出乎意料,go不会这么差吧研究了半小时,原因如下servlet添加里加了 response.setHeader("Pragma", "no-cache"); go的测试代码里没有设置该参数设置后重新跑测试o...阅读全文

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

Golang基于DFA算法实现敏感词汇过滤

DFA:确定有穷自动机。 具体功能: 将敏感词汇保存在map中。 对敏感词汇进行过滤,将敏感词变为“*”。 对无意义符号进行忽略处理。 敏感词数据结构: { 王:{ isEnd: false 八:{ isEnd:false 蛋:{ isEnd:true } } } } 无意义符号数据结构: { "@":Null (空结构体) } package main import ( "fmt" "strings" ) type Null struct {} var sensitiveWord = make(map[string]interface{}) var Set = make(map[string]Null) const InvalidWords = " ,~,!,@,#,$,%,^,&,*,(...阅读全文

博文 2019-06-03 13:34:39 贝塔船长

Go自学团队:Day 1 : fmt打印方法及数据类型的练习

``` package main //学习参考:http://www.runoob.com/go/go-data-types.html import "fmt" func main() { //打印会换行 fmt.Println("你好"); fmt.Println("你好2"); //fmt.Println("行注释"); /** 这里是段落注释 0000 */ //打印不换行 fmt.Print("testme"); fmt.Print("testme"); //语法的数据类型 var age int; fmt.Println(age) var istrue = true//写法1 va...阅读全文

【Golang】如何统一处理HTTP请求中的异常捕获

最近写GOLANG项目,不使用框架,路由选择httprouter 现在想实现一个需求:在不修改httprouter源码的前提下,对所有注册的路由handle进行异常捕获。 大家都知道golang使用panic()产生异常,然后可以recover()来捕获到异常,否则主程序直接宕掉,这是我们不希望看到的。 或者全程检查error,不主动抛出异常。即便这样,可能异常依然不能避免。 既然要recover(),但又不想在每个handle里面都去recover()一遍,如果你也有这样的需求,下面讲到的可能对你有用。 func RegRouters(r *httprouter.Router) { r.GET("/", Home) r.GET("/contact", Contact) } func Hom...阅读全文

博文 2017-09-21 22:30:00 ronli

gin-数据绑定+数据验证

将用户传来的参数和我们的绑定 type Login struct { User string `form:"name" json:"name" binding:"required"` //这里有做简单验证,表示参数是必须的 Age string `form:"age" json:"age" binding:"required"` } 绑定url查询参数到结构体,实质就是上一步获取到参数,然后新建一个结构体,这样在golang里面就可以用新的结构体来做操作了 r.Any("/test", func(c *gin.Context) { var persion Login if c.ShouldBindQuery(&persion) == nil { fmt.Println(persion.Use...阅读全文

博文 2019-10-12 13:32:58 aside section ._1OhGeD

go error 扩展

golang没有提供枚举支持,但是枚举在一些业务场景中却是十分重要的。举个简单的例子:发表帖子,需要对帖子做一些校验。这时我们可能就需要定义一些异常变量,这些常量自然是维护在枚举中语意更强,使用更加灵活。下面我简单介绍一下 http://www.threeperson.com 异常枚举实现思路。 #### iota 给const绑定序列值 ----------------- ```` type ErrorCode int const ( INTERNAL_ERROR ErrorCode = 1 + iota NOT_LOGIN NOT_EXIST_ARTICLE_ERROR ARTICLE_TITLE_LEN_OVERFLOW ARTICLE_CATEG...阅读全文

兄弟连区块链培训分享Go语言golang 组合和接口

作为一种底层技术,区块链技术由最初的数字货币到智能合约再到如今各行业场景分布式落定应用的实现,自2008年提出至今的10年间,区块链从最初的理论构想到如今的实际场景应用落地,虽质疑重重但却一直努力前行。尤其是近两年内,区块链对于现有行业逻辑的重新构建让它无可争议地成为下一个发展的风口。 兄弟连教育Go语言+区块链培训学院是由兄弟连教育携手微软区块链领域全球最具价值专家尹成及其带领的清华水木未名教学团队所组成,学习周期为五个半月,内容涵盖Go语言、区块链密码学、分布式编程、共识算法、公链开发、以-太=坊与智能合约与DAPP开发、区块链系统框架开发超级账本与区块链3.0EOS等内容。一,组合golang 中一切 皆是类型这个和 面向对象的 概念有点像 ,但是又不太像,和javascript倒是有...阅读全文

博文 2018-09-04 15:35:18 兄弟连区块链培训

golang中的断言 形如 A.(T)

形如A.(T) 其中A只能为interface, T为类型, 可以是interface 或者其他类型. string, int, struct等. 若T为变量类型. 则用于判断转换为对应的变量类型. 这种用法可以使得一个函数接受多类型的变量. func VarType(var interface {})(err error){ switch t := var.(type){ case string: //add your operations case int8: //add your operations case int16: //add your operations default: return errors.New("no this type") } } //空接口包含所有的类型...阅读全文

博文 2018-11-23 21:34:39 个00个

快递鸟单号查询自动识别接口,java对接调用示例

应用场景(1)PC端、移动端应用或网站应用集成运单物流信息查询功能时,只需要录入单号即可完成查询,无需用户输入快递公司。(2)电商网站要在快递鸟查询或者订阅运单时,可通过单号识别先行判断物流公司后,再订阅到快递鸟。API参数一、接口描述/说明(1)该接口仅对运单号做出识别,识别可能属于的一家或多家快递公司。(2)接口并不返回物流轨迹,用户可结合即时查询接口和订阅查询接口完成轨迹查询、订阅的动作。(3)接口识别会返回一家或者多家快递公司,返回的数据根据快递鸟大数据分析结果排序(4)若识别失败,快递鸟返回的匹配结果为空。(5)接口支持的消息接收方式为HTTP POST(6)请求地址:快递鸟请求系统级参数说明:​备注:R-必填(Required),O-可选(Optional),C-报文中该参数在一...阅读全文

golang中不定参数与数组切片的区别

package main import "fmt" func main() { myfunc1(88, 42, 12, 56) //传递不定数量的参数 myfunc2([]int{88, 42, 12, 56}) //传递一个数组切片 } func myfunc1(args ...int) { //接受不定数量的参数,这些参数的类型全部是int for _, arg := range args { fmt.Println(arg) } } func myfunc2(args []int) { //传递一个数组切片 for _, arg := range args { fmt.Println(arg) } } 参考资料: 《Go语言编程》 2.5.3 不定参...阅读全文

博文 2016-02-23 03:00:00 leo8

GoLang:通过url将值从view层(.tpl)传递到controller层

beego框架 1.定义路由: beego.Router("/UpdateState/:statename/:id", &controllers.ContentController{}, "*:UpdateState") 2.tpl中的url实现相对应的tpl文件中的url可以为< ahref="/UpdateState/FbState/{{.ID}}">{{.FbState}}其中,通过Url传递到controller中的变量有:statename,id ,对应的值分别为 "FbState",和通过{{.ID}}取得的值,例如为"3"3.controller处理: func (c *ContentController) UpdateState() { statename := c....阅读全文

博文 2016-01-06 03:00:00 basque

golang语法总结(二十一):方法method

Go不像其它面相对象语言一样可以写个class,然后在class里面写一堆方法,但是它也很巧妙的实现了这种效果,我们只需要在普通函数前面加个接受者(receiver,写在函数名前面的括号里面),这样编译器就知道这个函数(方法)属于哪个struct了。 下面是简单示例: type A struct { Name string} func (a A)foo() { //接收者写在函数名前面的括号里面 fmt.Println("foo")} func main() { a := A{} a.foo() //foo} 需要注意的是,因为Go不支持函数重载,所以某个接收者(receiver)的某个方法只能对应一个函数,比如下面的就属于方法重复,编译无法通过: func (a A)foo() { fmt...阅读全文

博文 2016-02-23 15:00:04 QQ245671051

Golang——append的可变参数

合并slice,跟合并数组一样,是比较常见的操作。映像中C++运算符重载以后,直接用加号就可以了。Golang果断不行。先开始用copy解决。 func copy(dst, src []Type) int 从来没用过这个函数,返回值和append还不一样,返回的是复制的数目。而且只能针对slice操作,不支持其他类型。能参数表也能看出,两个参数必须是同一种类型,不可以是[]Type和[]interface{}这种形式。此函数也不是追加到dst后面,而是从头开始复制。如果要追加到后面,还需要指出位置信息。copy实现的合并数组完整代码: a := []int{1, 2, 3, 4} b := []int{5, 6, 7} c := make([]int, len(a)+len(b)) copy...阅读全文

博文 2017-02-09 12:25:08 Bryce

Github 上 Go Chinese Site 的 Organizations 的第一个基本完成的项目:go-simple-router

golang实现的简单http路由器,用于学习理解http。 项目地址:https://github.com/go-chinese-site/go-simple-router 发起人: @wenjiax 欢迎大家学习、改进、试用! 为了便于大家协作开发、交流,社区增加了 [Go项目协作](/go/cooperation) 节点,同时创建了专门的 QQ 群:195831198,入群提供社区账号和github账号,否则不让加入! 关于项目本身的协作、交流,尽可能的通过项目的 issue 和 本社区,其他事情通过 qq 群...阅读全文

golang 接口参数 简单使用

package main import "fmt" type IAnimal interface { Run() } type Animal struct{} func (a *Animal) Escape(ianimal IAnimal) { ianimal.Run() } func (a *Animal) Run() { fmt.Printf("Animal Run.\n") } type Dog struct { s Animal } func (d *Dog) Run() { fmt.Printf("Dog Run.\n") } func main() { dog := &Dog{} dog.s.Escape(dog) //触发 Dog Run ad:=&Animal{} ad.Es...阅读全文

博文 2018-01-29 19:33:03 304158