草庐IT

second_var

全部标签

go - `var a chan int` 和 `a := make(chan int)` 有什么区别?

今天我在学习channels和goroutineofgo。我遇到了一些让我困惑的现象。我的go文件如下所示:packagemainimport("fmt")functestRoutine(numberint,channelchanint){channel当我使用语法a:=make(chanint)时效果很好。但是当我将a:=make(chanint)更改为varachanint时,我得到了panic报告:fatalerror:allgoroutinesareasleep-deadlock!goroutine1[chanreceive(nilchan)]:main.main()/User

golang : difference between var b Buffer and bytes. 缓冲区{}

varbbytes.Buffer//ABufferneedsnoinitialization.b:=bytes.Buffer{}这两个有什么区别?我在这里试过:http://play.golang.org/p/lnkkULeIYm没看出区别。谢谢, 最佳答案 :=是var的简写语法,在这种情况下b是一个零值bytes.Buffer。varbbytes.Buffer//isthesameasvarb=bytes.Buffer{}//isthesameasb:=bytes.Buffer{}您不能在函数外使用简写版本,因此对于全局变量,您

go - mux.Vars 在使用 httputil.ReverseProxy 时为空

我正在尝试同时使用gorillamux和httputil.ReverseProxy,但是在尝试获取mux.Vars时它是空的。根据https://golang.org/src/net/http/httputil/reverseproxy.go?s=2744:2819#L93看起来http.Request指针是原始请求的浅拷贝,它应该仍然有效。有什么想法吗?https://play.golang.org/p/JpjNvEMIFBpackagemainimport("github.com/gorilla/mux""log""net/http""net/http/httputil""net/

go - 在 go 中使用 var 和不使用 var 声明变量的区别

我在使用step35inthetourofGo时遇到了一些问题运动。这是我的代码:packagemainimport"code.google.com/p/go-tour/pic"funcPic(dx,dyint)[][]uint8{varpic=make([][]uint8,dy)fory:=0;y在寻找解决方案时,我找到了PeterSO's完美运行的代码funcmain(){pic.Show(Pic)}funcPic(dx,dyint)[][]uint8{pixels:=make([][]uint8,dy)fory:=0;y我能看到的唯一区别是,我使用var关键字定义pic变量,而他

go - 输入 noRows struct{} var _ Result = noRows{}

typenoRowsstruct{}var_Result=noRows{}我的问题是为什么初始化一个变量却立即丢弃它? 最佳答案 空白标识符有许多可能的用途,但其主要目的是允许丢弃具有多个返回值的函数的返回值://Weonlycareabouttheruneandpossibleerror,notitslengthr,_,err:=buf.ReadRune()还有一些其他有趣但有时很老套的用途。将导入变量或局部变量标记为“已使用”,以便编译器不会发出错误:import"fmt"var_=fmt.Println//nowfmtisus

go - `int * time.Second` 什么时候工作,什么时候不在 golang 中?

为什么time.Sleep(5*time.Second)工作正常,但是:x:=180time.Sleep(15/x*60*time.Second)不是吗?我收到类型不匹配错误(类型int64和time.Duration)。鉴于错误,我更了解后者为何失败,而不是前者为何成功。 最佳答案 在Go中,一个numericliteral(e.g.60)isanuntypedconstant.这意味着它将被静默地强制转换为适合它所使用的操作的任何类型。所以当你说:varx:=5*time.Second然后根据time.Second推断类型为ti

Go: 将 var 传递给匿名函数

我在将变量传递到匿名函数时遇到问题。有解决办法吗?import"github.com/lxn/walk"***varopenAction[12]*walk.Actionfori:=0;iexec(i)其中i总是=11 最佳答案 fori:=0;i虽然看起来很疯狂,但您将在Go代码中看到这一点。它源于闭包的工作方式和变量的作用域。您的匿名函数是一个捕获i的闭包。具体来说,它捕获一个名为i的变量,而不是i的当前值,并且它捕获范围内的任何i。在您的原始代码中,这是循环变量,对于循环的每次迭代都是相同的变量。您所有的闭包都捕获了相同的变量。

sql - 戈朗 : Ping succeed the second time even if database is down

我遇到了一个有趣的问题,即db.Ping()不会返回错误,即使自第一次尝试以来数据库已被终止。源代码如下:import("database/sql""fmt""log""time"_"github.com/go-sql-driver/mysql")typedatabasestruct{datasourcestringconn*sql.DB}//ConnectcreatesandinitialisesaDatabasestructfunc(db*database)Connect(server,user,password,DBPortstring)error{varerrerrordb.d

go - mux.Vars 不工作

我在HTTPS(端口10443)上运行并使用子路由:mainRoute:=mux.NewRouter()mainRoute.StrictSlash(true)mainRoute.Handle("/",http.RedirectHandler("/static/",302))mainRoute.PathPrefix("/static/").Handler(http.StripPrefix("/static",*fh))//BindAPIRoutesapiRoute:=mainRoute.PathPrefix("/api").Subrouter()apiProductRoute:=apiR

go - 从 Go 中的本地 var 中消除包名称的歧义

有没有一种好方法可以消除包名和局部变量之间的歧义?如果不需要,我宁愿不重构导入名称或变量名称。举个例子……import"path"funcfoo(){path:="/some/path"//Disambiguateherepath.Join(path,"/some/other/path")} 最佳答案 局部变量总是覆盖(隐藏)这里的包。选择另一个变量名称,或将包命名为其他名称:http://play.golang.org/p/9ZaJa5Joca或http://play.golang.org/p/U6hvtQU8dx在其他答案中查看