标题几乎总结了它.我正在尝试Go,我真的很想能够在交互式环境中设置断点并在我想要的内容中进/出.我知道我可以使用gdb来调试Go,但与使用可以插入gdb进行断点操作的IDE相比,这是非常烦人的.
我尝试搜索一个,只能找到具有语法高亮但没有调试的插件或小型IDE.
为什么我不能将递归函数定义为变量?我似乎能够定义任意函数,除非它们递归.
这是合法的:
func f(i int) int {
if i == 0 {
return 1
}
return i * f(i-1)
}
func main() {
fmt.Println(f(2))
}
Run Code Online (Sandbox Code Playgroud)
这是非法的:
var f func(int) int = func(i int) int {
if i == 0 {
return 1
}
return i * f(i-1)
}
func main() {
fmt.Println(f(2))
}
Run Code Online (Sandbox Code Playgroud)
这是合法的,我猜这只是因为你可以在初始化后找出f:
func main() {
var f *func(int) int;
t := func(i int) int {
if i == 0 {
return 1
}
return i * (*f)(i-1)
} …Run Code Online (Sandbox Code Playgroud) 风格指南在这种情况下不清楚(除了给出意见,它是奇怪的,它是).我有一串哈希/数组函数可以在复杂的响应对象上执行.我需要做几种选择和地图.目前我只有一长串方法调用,但是用于排序和选择的一些块是多行而有些则不是.
我应该混合块定义类型吗?只使用大括号或只使用.end块?我应该把它分成多个步骤吗?
另外,如果我重构我的块并将它们变成方法,那么将它们放在哪里是合适的?它们在包含类的实例或类方法的上下文中并没有真正意义.
我环顾四周,对于什么是正确的样式没有找到共识,但我正在寻找一种能够通过Ruby样式指南的方法(所以最有可能将我的块重构为方法,但我在哪里放置它们?)
这是一个人为的例子:
def example1 (arr)
arr.sort do |a, b|
a_pieces = a.value.split ' '
b_pieces = b.value.split ' '
(a_pieces[1] + a_pieces[5]) <=> (b_pieces[1] + b_pieces[5])
end
.last[:some_value]
.select do |a|
a == 'something'
end
end
def example2 (arr)
arr.sort { |a, b|
a_pieces = a.value.split ' '
b_pieces = b.value.split ' '
(a_pieces[1] + a_pieces[5]) <=> (b_pieces[1] + b_pieces[5])
}
.last[:some_value]
.select { |a| a == 'something' }
end
Run Code Online (Sandbox Code Playgroud)