小编Dan*_*ams的帖子

是否存在任何golang交互式调试器?

标题几乎总结了它.我正在尝试Go,我真的很想能够在交互式环境中设置断点并在我想要的内容中进/出.我知道我可以使用gdb来调试Go,但与使用可以插入gdb进行断点操作的IDE相比,这是非常烦人的.

我尝试搜索一个,只能找到具有语法高亮但没有调试的插件或小型IDE.

debugging go

82
推荐指数
8
解决办法
4万
查看次数

Golang函数和函数变量语义

为什么我不能将递归函数定义为变量?我似乎能够定义任意函数,除非它们递归.

这是合法的:

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)

go

14
推荐指数
1
解决办法
3万
查看次数

适用于包含块的多行方法链接的Ruby样式

风格指南在这种情况下不清楚(除了给出意见,它是奇怪的,它是).我有一串哈希/数组函数可以在复杂的响应对象上执行.我需要做几种选择和地图.目前我只有一长串方法调用,但是用于排序和选择的一些块是多行而有些则不是.

我应该混合块定义类型吗?只使用大括号或只使用.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)

ruby coding-style

4
推荐指数
2
解决办法
6845
查看次数

标签 统计

go ×2

coding-style ×1

debugging ×1

ruby ×1