我正在Go for Go中编写一个解析器,为了测试它,我从github项目中下载了一堆文件.
在https://github.com/andlabs/ui中,我碰到了包含这段代码的文件:
func moveLabel(*Button) {
from := movingCurrent
to := 0
if from == 0 {
to = 1
}
movingBoxes[from].Delete(0)
movingBoxes[to].Append(movingLabel, false)
movingCurrent = to
}
Run Code Online (Sandbox Code Playgroud)
有点让我感到困惑的是看到一个Button没有名字的指针作为函数参数,这使得无法从函数内部引用.
但是,鉴于编译器没有抱怨,它似乎在语法上是正确的.
Go中的unamed函数参数的目的是什么?
我试图在Go中的另一个函数中定义一个递归函数,但我正在努力获得正确的语法.我正在寻找这样的东西:
func Function1(n) int {
a := 10
Function2 := func(m int) int {
if m <= a {
return a
}
return Function2(m-1)
}
return Function2(n)
}
Run Code Online (Sandbox Code Playgroud)
我想将Function2保留在Function1的范围内,因为它正在访问其范围的某些元素.
我怎么能在Go中这样做?
非常感谢
这里有以下功能.我注意到最后一个参数是用_.这种模式的目的是什么?
func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
fmt.Fprint(w, "Welcome!\n")
}
Run Code Online (Sandbox Code Playgroud) 在 Golang 中可以做这样的事情吗?
package main
import "fmt"
type myFunType func(x int) int
var myFun myFunType = myFunType { return x } // (1)
func doSomething(f myFunType) {
fmt.Println(f(10))
}
func main() {
doSomething(myFun)
}
Run Code Online (Sandbox Code Playgroud)
换句话说,是否可以使用函数类型别名声明函数类型变量而不重复签名?或者,有没有办法在创建函数类型的变量时不总是重新输入整个函数签名?
上面的代码示例,我希望它等同于下面的代码示例(用 line 替换(1)line (2)),导致编译错误syntax error: unexpected return, expecting expression。
package main
import "fmt"
type myFunType func(x int) int
var myFun myFunType = func(x int) int { return 2 * x } // (2)
func doSomething(f myFunType) …Run Code Online (Sandbox Code Playgroud) 我有一个值分配给一个变量。如何打印变量的名称而不是分配给变量的值?我知道我可以将变量名硬编码到 Printf 函数中,但我不想使用它。如果类似的东西在 Go 中有效,我想使用格式化程序。
例子
user := "Jada"
fmt.Println(user)
Run Code Online (Sandbox Code Playgroud)
上面将打印分配给变量的值,即“Jada”。
有没有办法让它打印变量名、用户而不是变量值?
我在Go中有一个函数如下:
func MyFunction(name, address, nick string, age, value int) {
// perform some operations
}
Run Code Online (Sandbox Code Playgroud)
我想用参数调用这个函数("Bob","New York","Builder",30,1000)但是我想在调用函数时使用字段名称.但是以下技术都没有奏效(他们抛出'未解决的参考错误'):
MyFunction(name = "Bob", address = "New York", nick = "Builder", age = 30, value = 1000)
MyFunction(name : "Bob", address : "New York", nick : "Builder", age : 30, value : 1000)
Run Code Online (Sandbox Code Playgroud)
怎么做得好?在初始化结构时使用字段名称没有问题,但是对于函数来说,我似乎缺少某些东西.