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

一个简单GOLANG路由

package controllers import ( . "logger" "web" ) //对象继承直接拥用REST标准接口 type login struct { web.ControllerBase } func (this *login) Get() { this.Template["key"] = "value" this.WriteString("GET:", this.Template) } func (this *login) Post() { this.WriteString("POST:", this.Template) } //对象不继承注册一个方法到路由 type signOut struct { } func (this *signOut) signOutGe...阅读全文

博文 2015-06-17 20:18:49 x_focus

go gdb调试 参数设置

编译时,如果编译的结果需要gdb调试则使用参数-gcflags “-N -l”,这样可以忽略Go内部做的一些优化,聚合变量和函数等优化. go build -gcflags "-N -l",但是一定要注意是不是小写的i,也不是大写的I,是小写的L,不然会出现奇怪的错误。 如果编译的结果需要发布.则使用-ldflags “-s”,可以去掉调试信息,减小大约一半的大小 go build -ldflags "-s" 删除调试符号:go build -ldflags “-s -w” -s: 去掉符号信息。-w: 去掉DWARF调试信息。 关闭内联优化:go build -gcflags “-N -l...阅读全文

Go语言入门(四)——不定参数

不定参数类型 不定参数是指函数传入的参数个数为不定数量。 package main import ( "fmt" ) /* 不定参数函数 */ func Add(a int, args ...int) (result int) { result += a for _, arg := range args { result += arg } return } func main() { fmt.Println(Add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) } 代码中的args是一个数组切片,而且只能放在参数中的最后面。 不定参数的传递 func SetData(args ...int) (result int) { //不定参数的传递 return Add(1, ar...阅读全文

博文 2016-02-16 10:00:00 jaykiller123

ionic 路由使用$state.go父页面向子页面传递参数

1.父页面的路由配置 .state('tab.article', { url: '/article', nativeTransitions: { type: "fade" }, views: { 'tab-article': { templateUrl: 'templates/article/article.html', controller: 'ArticleController' } } })2.子页面的路由配置 .state('tab.article_details', { url: '/article_details?articleDetailsUrl', views: { 'tab-article': { templateUrl: 'templates/article/articl...阅读全文

博文 2016-09-06 17:00:07 hunannanhu

golang – fmt 格式化参数

文 基本 %v the value in a default format when printing structs, the plus flag (%+v) adds field names %#v a Go-syntax representation of the value %T a Go-syntax representation of the type of the value %% a literal percent sign; consumes no value The default format for %v is: bool: %t int, int8 etc.: %d uint, uint8 etc.: %d, %#x if printed with %#v floa...阅读全文

博文 2017-04-30 12:00:24 中柠檬

golang的swagger注解

@Tags: 分类信息 例如: // @Tags 用户接口 @Summary: 操作的简短摘要。 例如: //@Summary 通过用户名得到用户信息 @Description: 操作的详细说明。 例如: //@Description 操作行为的详细说明。 @Param:参数信息,用空格分隔的参数。param name,param type,data type,is mandatory?,comment attribute(optional) 1.参数名 2.参数类型,可以有的值是 formData、query、path、body、header,formData 表示是 post 请求的数据,query 表示带在 url 之后的参数,path 表示请求路径上得参数,例如上面例子里面的 key...阅读全文

博文 2020-06-08 01:33:18 Lan_de

自动化部署工具Syncd

syncd是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率. **目前只支持类Linux系统.** ## 目录 - [特性](#特性) - [原理](#原理) - [安装](#安装) - [使用](#使用) - [帮助](#帮助) - [授权](#授权) ## 特性 - Go语言开发,编译简单、运行高效 - Web界面访问,交互友好 - 灵活的角色权限配置 - 支持Git仓库 - 分支、tag上线 - 部署hook支持 - 完善的上线工作流 - 邮件通知机制 ## 原理 阅读全文

Golang中的路由

之前有篇文章比较浅显的分析了一下golang的服务器如何实现,还有Handler, DefaultServeMux,HandlerFunc的用处。 我们现在已经明白了DefaultServeMux就是存放pattern和handler的地方,我们称其为路由,那么我们可能会想,既然golang能够实现这个路由,我们能否也模仿一个呢? 首先我们需要一个能够保存客户端的请求的一个容器(路由)。 创建路由结构体 type CopyRouter struct { router map[string]map[string]http.HandlerFunc } 在这里我们创建了一个像DefaultServeMux的路由。 客户端请求存入路由 func (c *CopyRouter) HandleFunc(...阅读全文

博文 2018-06-19 17:34:39 达闻西

golang实现一个简易的http路由及其原理

前提:实现一个http路由必须要了解net/http包,主要是go/src/net/http/server.go文件 go实现一个web路由主要做三件事: 监听端口 接收客户端的请求 为每个请求分配对应的handler(对应到php中就是将请求转发到相应的controller和action) 下面是一个简单的实现路由的逻辑 package main import ( "fmt" "net/http" ) func rootGateWay(w http.ResponseWriter, r *http.Request) { println("Welcome to Chris's homepage! ") } func defaultGateWay(w http.ResponseWriter, r...阅读全文

博文 2017-09-18 15:03:22 ssdut_buster

golang内置数据类型作为函数参数

先上结论 golang的所有内置类型作为函数参数传递都是传值的方式(没有传递引用一说),需要注意的是:数组、slice和map作为函数参数时也是传值,但是如果对结构内元素进行的修改,修改的是原数据。如果是对其进行整体赋值,则不会修改原数据,相当于拷贝出一个新的临时变量。要想无论什么情况都修改原数据,可以通过传递指针参数实现。 来段实例代码 1 package main 2 3 import ( 4 "bytes" 5 "fmt" 6 "strings" 7 ) 8 9 func f_1(a int) { 10 a = 2 11 } 12 13 func f_1_1(a *int) { 14 *a = 2 15 } 16 17 func f_2(s string) { 18 s = "cba"...阅读全文

博文 2016-06-29 02:00:01 borey

GO语言练习:不定参数函数

1、代码 2、运行 1、代码 package main import "fmt" func MyPrintf(args ...interface{}){ for _, arg := range args { switch arg.(type) { case int : fmt.Println("\"", arg, "\"", "is an int value.") case string : fmt.Println("\"", arg, "\"", "is a string value.") case int64 : fmt.Println("\"", arg, "\"", "is an int64 value.") default : fmt.Println("\"", arg, "\""...阅读全文

博文 2015-07-05 03:00:01 fengbohello

【GO】串口简单通讯

背景 最近再学习 go 语言,在某宝用5块钱买了个教学视频 8 日速成,目前看到了第3天的视频,进度龟速。。。。。这周末加油! 然后,学习 go 语言的目的是想用 go 做自动测试,我是只学过 C ,感觉 go 语言和 C 比较相近,学起来比较简单、迅速。 串口通讯代码 golang 串口源码:https://github.com/huin/goserial 对于 go 的串口通讯要求如下: Data Bits:8 Stop Bits:1 Parity:None Hardware Flow Control:None Software Flow Control:None 代码块分解解析 设置串口号和波特率 c := &serial.Config{Name: "COM5", Baud: 1152...阅读全文

博文 2019-05-29 14:44:58 XiuHua_Wu

go的switch case

可以一个case带几个参数: var i = 0 switch i { case 0, 1: fmt.Println(“1”) case 2: fmt.Println(“2”) default: fmt.Println(“def”) } 默认有break效果,要取消就加上fallthrough: var i = 0 switch i { case 0: fallthrough case 1: fmt.Println(“1”) case 2: fmt.Println(“2”) default: fmt.Println(“def”) } case还可以是表达式: var i = 0 switch { case i > 0 && i < 10: fmt.Println(“i > 0 and i <...阅读全文

博文 2019-01-22 18:35:15 梁十八

问个os.exec 执行windows 下命令的问题

我在windows 目录下面有个cwRsync_5.4.1 的包 path="/cygdrive/c/null/ /cygdrive/c/data/20140101" cmd := exec.Command("cmd", "/C", "C:\\cwRsync_5.4.1\\rsync.exe", "-av", "--delete", path) cmd := exec.Command("C:\\cwRsync_5.4.1\\rsync.exe", "-av", "--delete", path) 都执行无效果。 我拿cmd.Args() 的 里面的参数,在windows 下执行是好的。 另外我也试过了cmd.Start() cmd.Run() 都不可以。。。。...阅读全文

golang中 方法集的概念,你了解么?

go规范中提到过方法集的概念,你了解么?下面的代码输出结果是啥? package main import "fmt" type t1 int type t2 int func( t *t1) String() string { return "ptr" } func( t t2) String() string { return "val" } func main() { var a t1 var b t2 a = 5 fmt.Println( a, b) } 结果分析: 指针的方法集包括两部分:(t *T)这样的方法和(t T)这样的方...阅读全文

beego.InsertFilter过滤器

beego.InsertFilter过滤器是为某些router提供过滤功能,可以设置在某个路由访问时进行额外的操作。通过参数设置可以设置过滤器执行的时刻。 如下所示beego.InsertFilter有一下几个参数: InsertFilter(pattern string, pos int, filter FilterFunc, params …bool) pattern:路由规则,过滤器作用的路由 pos : 过滤器执行的时刻,有以下5种 beego.BeforeStatic beego.BeforeRouter 访问路由之前 beego.BeforeExec 访问路由之后执行controller之前 beego.AfterExec 执行controller之后调用 beego.Finis...阅读全文

博文 2018-09-11 10:13:11 JimPang

golang 进程出现too many open files的排查过程

1. 现象 服务的cpu跑满(golang实现), 并大量报too many open files错误.服务使用systemd来运行,部署在阿里ecs上. 2.分析 从日志来看,cpu的上升主要为到达文件数限制引起的,但之前已经更改过系统的文件数及所有用户的文件数,按道理是不应该出现这个问题的,后来查阅资料发现,文件数可以从三个维度限制分别为操作系统限制,用户态限制,以及进程限制,对于这三个维度选取最小值生效.于是对系统进行分析. 首先查看当前打开文件数, 进程占用的文件数并不多. lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more 然后获取系统级文件数限制 输入命令cat /etc/sysctl.conf得到fs.file-max = 1...阅读全文

博文 2016-10-11 09:00:11 u010511236

安装google Tesseract,准备用golang写个图像识别的项目

环境: OS X EI Capitian Version 10.11.6 安装步骤参照: https://github.com/GeertJohan/go.tesseract/tree/v1 $ brew install leptonica $ brew install tesseract $ export CGO_LDFLAGS="-L/usr/local/Cellar/leptonica/1.72/lib -L/usr/local/Cellar/tesseract/3.04.01_1/lib" $ export CGO_CFLAGS="-I/usr/local/Cellar/leptonica/1.72/include -I/usr/local/Cellar/tesseract/3.04...阅读全文

博文 2016-08-29 12:00:07 有个地方叫作遥远

golang不定参数

1.有时候想一个函数中传入的参数很可能是不定的,除了可以使用: func funcname(...interface{}){ } 2.也可以将许多参数放进一个数组中,然后作为参数传入函数(或许会觉得这样有点多此一举,但是很可能存在历史遗留问题): func funcname(args []interface{}){ fmt.Print(args...) //args...是将一个数组按顺序变成不定参数传入,这个还真的挺好用的 } $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

博文 2015-11-30 15:00:42 vrinux

beego多级路由导致页面不能正常加载css样式

(1)路由设置:beego.Router("/index",&controller{}) (2)controller的Get()方法:this.TplName="index.html" (3)其中index.html位于views文件夹下,引用了位于static文件夹下的css,"./static/css/xxxxx; 此时访问/index路径能正常加载css显示index.html页面。 (4)如果把路由设置成beego.Router("admin/index",&controller{}),其他不变,访问admin/index时则不能正常显示index.html页面. (5)检查页面元素时发现index.html页面加载的css路径位于admin/static/css/xxxx...阅读全文

Golang匿名函数参数的作用

今天写代码的时候用到了协程go func,发现func函数块内部的代码也能使用外部的局部变量,当时我就加上了打印发现闭包内部的变量值和外部的局部变量是一样的,就觉得很费解匿名函数的传参是什么用的? 然后我就做了个小实验,运行如下代码 func main() { i := 1 go func() { time.Sleep(100*time.Millisecond) fmt.Println("i =", i) } () i++ time.Sleep(1000*time.Millisecond) } 打印如下 i= 2 Process finished with exit code 0 这就说明了闭包内取外部函数的参数的时候是取的地址,而不是调用闭包时刻的参数值.我们通过如下代码验证我们的想法: ...阅读全文

博文 2019-01-04 13:34:47 cbsfly_iDev

小弟阅读studygolang关于路由的流程遇到的问题

下面是我对studygolang路由部分的理解,不知道是否有错误,请大伙指正。这部分在我脑海里还是一堆散沙,无法结合起来。 main函数中initRouter()配置了router和subRouter两个路由。每个路由都有好几个filter,分别实现PreFilter、PreErrorHandle、PostFilter的接口。 在chain.go中的Run()。先执行PreFilter()若返回错误,将执行PreErrorHandle(),否则继续执行PostFilter()输出页面。 (输入页面方式如:view.go的PostFilter()函数中tpl.Execute(rw, data)将填充好的模版返回给用户。) 路由通过string路径注册,每个路由配...阅读全文

fswatch 根据文件变化触发相应指令,(参考了autogo, bee)的相关资料

[https://github.com/shxsun/fswatch](https://github.com/shxsun/fswatch) autogo我不太习惯,因为它还需要配置文件,我是希望什么都不用我管才好。后台开始用bee。 其实这个东西跟astaxie写的bee很像,可以自动检测代码的变化,然后运行`go test`。 为什么要再写一个呢? 主要原因还是bee没法自定义运行命令。 比如我想让代码变化是运行 go test -v。就只能改代码了。 我想做的呢,就是一个通用的东西。不管是go还是c++, 甚至php都能搞定。 因为系统的事件还是蛮多的。 需要进行事件的过滤,于是我就想到了.gitignore文件(这个git用的,所以学golang的对它应该不陌生...阅读全文

beego中发送的请求和路由无法匹配

新手刚刚接触beego,使用beegoadmin作为后台管理系统; 问题:在beegoadmin中新增Node节点,router.go中新增路由,页面层使用easyui发送请求调用,添加AddDocotor的Post请求可以收到但是无法保存表单内容,其他的请求不论用put,post,get还是delete,响应的结果都是404,还请各位前辈指教,谢谢。 解决办法:路由大小写和请求的url需要严格匹配 ```go 路由部分: beego.Router("/rbac/doctor/AddDoctor", &controllers.DoctorsController{}, "*:Post") beego.Router("/rbac/Doctor/UpdateDoctor", ...阅读全文

Go web之旅(路由篇)

据说Go语言设计出来就是为了解决web软件的并发等诸多问题的,所以Go语言又被称为互联网中的c语言。一般的web应用采用的是"请求-响应"模式。在Go web中数据请求与数据返回相当于是基于"请求-响应"模式的web程序的输入输出。而其中数据在不同地方或者叫层次上有不同的表现形式,在客户端上数据一般采用字符串形式体现,而在后台数据一般体现为结构体或对象,这中间的转换需要相应的工具。 用servlet/jsp直接开发过Java web程序的同学应该知道,在整个架构中必不可少的元素有web容器,web.xml.web容器必不可少大家应该无异议,但web.xml为什么说也必不可少呢?在web程序中一般采用的MVC三层,当在V层(视图层)向服务器端发送请求时,程序会到web.xml进行URL map...阅读全文

博文 2015-12-23 14:00:00 zyb228107

go语言那些“坑”之函数切片参数

函数的切片参数问题 输出结果: test变量容量足够容纳addElement函数添加的元素,所以在函数中ret地址没变。test及ret指向的地址应该是一样的,但函数调用完成后test值还是为空?为了解答这个问题先看下这个issue。 s和t属于不同变量,但append操作后s和t指向了同一个内存(s容量没有扩展),但s并没有打印1234,之所以会这样是因为append赋值给t后,t的长度变成了4,而s的没有变化。但s指向的内存其实还是存在[1,2,3,4]值的。这样再回头看函数参数为切片的问题就清楚了,应该是test的长度未变导致的。引用golang中切片slice的引用和地址问题Golang 切片与函数参数“陷阱...阅读全文

博文 2019-07-12 21:32:40 空格键_11aa

ST的自动完成功能怎么让它不自动加上“CR”符号

![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqkAAAGFCAIAAABRwv1AAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nOydeUBVZf7/P88BNS1XVtNJQFEBQ0kNpxlXLNwSW5iwmtKyYqxJzGkzs82casbEmm+hbdq3Rvo6FTAWOomKtmjpD2ViERVwR5BELHO75/n9cfZ7z7ncCxcucN+vbnjPc57lc57nOc/72c65bGfFL0REjBEREVO+MiYI8hemukt+ZLjjd27vyHSn9acMh3YnSDbE3pmbfjXB5CyXonTZv/tw...阅读全文

家庭/企业网络的透明代理软件 kone

kone是一款把路由请求转发到http/sock5 proxy的软件(route2proxy),你可以把它应用到很多需要路由的场合,它同时实现了dns欺骗功能,并隐藏其中的代理服务器细节,实现透明穿越。特点如下: (1)实现了灵活的匹配模式 (2)实现了dns欺骗功能可以透明穿越 (3)实现了WEB status接口,方便查看运行状...阅读全文

Go_默认路由源码分析

func main() { http.HandleFunc("/say",say) err := http.ListenAndServe(":8080", nil) if err != nil { log.Fatal(err.Error()) } } func say(w http.ResponseWriter, r *http.Request) { // }上面是一段启动web服务的代码通过监听8080端口 并且在启动钱注册了say()函数 如在浏览器输入 localhost:8080/say就会默认回调say函数 今天就来分析一下这其中的大致过程 首先在go当中做请求转发可以使用系统默认的路由器也可以使用自己定制的路由器但是都必须要去实现Handler接口 type Handler in...阅读全文

博文 2014-11-04 16:00:00 u012807459

函数参数的 splats 写法无法识别?

新手表示正在看的 PDF https://github.com/mikespook/Learning-Go-zh-cn 里边有 splats... CofeeScript 里的叫法,, 顺带问下 Golang 里这叫啥? 问题是我用了这样的语法, 结果编译过程报错.. 请问这语法在新的 Golang 里是怎么? 我的环境是 ``` ➤➤ uname -a Darwin chentekiMacBook-Air.local 12.4.1 Darwin Kernel Version 12.4.1: Tue May 21 17:04:50 PDT 2013; root:xnu-2050.40.51~1/RELEASE_X86_64 x86_64 ➤➤ go version ...阅读全文

Golang接口interface的使用

关键字interface 如果一个结构体绑定的方法包含接口的所有方法,即认为实现了该接口 将对象赋值给接口时,会发生拷贝,而接口的存储是指向这个复制的指针,复制的无法修改原来状态,也无法获取指针 type CallBack interface{ getName() string } type User struct{ name string } func (user User) getName()string{ return user.name } user:=User{} f.println(user.getName()) 上面声明了一个CallBack,结构体User绑定了一个getName的方法,跟CallBack接口所声明的接口名称一样,而且实现了CallBack接口的所有方法(他现...阅读全文

博文 2017-10-10 06:04:56 Link_Biao

HTTP(S) 路由器fabio

fabio 是一个快速、现代、zero-conf 负载均衡 HTTP(S) 路由器,用于部署 consul 管理的微服务。 fabio 由 eBay Classifieds Group 开发, 用于处理 marktplaats.nl 和 kijiji.it 的流量。Marktplaats 所有的流量都经过 fabio ,每秒有数千个请求,分发于数个 fabio 实例。但我们并没有观察到任何延迟。 特性: * Go 语言单一二进制,没有额外的依赖。 * Zero-conf * 通过后台观察器热重载路由表 * 轮转和随机分布 * Traffic Shaping (send 5% of traffic to new instances) Graphite metrics * 请求跟踪 * W...阅读全文

类似Delphi VCL的Windows控件的绑定实现GVCL

Windows的GUI界面Go语言封装,目标是实现一个类似Delphi VCL版本效果的界面库 目前整体组件框架已经具备雏形,要增加其他组件库按照扩展的Button和Edit以及Label增加则可,实现了托盘组件,弹出菜单组件,以及注册表操作库,使用方法基本上和Delphi一致,具体可以查看 GitHub https://github.com/suiyunonghen/GVC...阅读全文

优秀跨平台Redis可视化客户端工—RedisViewer

自荐RedisViewer一个有情怀的跨平台Redis可视化客户端工具 感谢头条小哥的精彩推广 — 最美分享Coder 介绍 在以往的文章中曾经介绍过几款Redis的可视化工具,在笔者的印象中Redis至今没有一款非常专业的可视化管理客户端,就算之前介绍过的几款也是差强人意,有些时候满足不了我们的需求,而今天本文要介绍的是另一款值得推荐的Redis可视化客户端,以下通过截图的方式来展示这款软件! 已支持Windows、MacOS、Linux,方便不同平台开发者们使用! 本软件出自@可乐onefineday之手。 技术栈 UI: electron、vue、elenentui 服务: springboot 、webflux 、mybatis 、mapper PS: 现阶段服务JVM使用openj...阅读全文

博文 2019-10-22 23:33:12 aside section._1OhGeD

Golang 中的引用传递与值传递

一直以为自己了解了引用传递,没想到再次打破了自己的认知,所以开一篇文章,来记录一下到目前所知(本人不敢说自己已经完全掌握了)。 从书中了解到,map,slice 都是引用传递。有以下场景需要区分。 Map 变量赋值与改变其中某个元素的值 func main() { a := map[string]string{"a": "a"} newA := a for key, _ := range a { if key == "a" { a[key] = "A" } } fmt.Println(a) // map[a:A] fmt.Println(newA) // map[a:A] a = map[string]string{} fmt.Println(a) // map[] fmt.Println(...阅读全文

博文 2019-10-08 20:32:44 aside section ._1OhGeD