修改go中Stringer接口中的一个默认值

Modify a default value in the Stringer interface in go

我在这里查看 gota 数据框中的打印界面: https://github.com/kniren/gota/blob/master/dataframe/dataframe.go#L99

我看到默认值是 shortCols = true,给定 here

当我调用打印数据框时,如何覆盖此值以在打印时使用 shortCols = false 进行打印?

fmt.Println(fil)

例如,我想打印所有列,而不仅仅是前 5 列,因为上面的结果如下:

[31x16] DataFrame

    valA   valB    valC    valD    valE        ...
 0:  578   8.30     491    7959    1.040000    ...
 1:  577   8.30     291    7975    2.050000    ...
 2:  466   16.7     179    6470    3.210000    ...
 3:  592   9.03     194    8212    4.040000    ...

不修改库就无能为力。

如果可以选择修改库,您有以下几种可能性:

  1. 更改内部格式化函数的名称,以便导出并调用它。这需要做更多的工作,因为每次要打印 DataFrame 时都需要显式调用一个函数,但如果您想对库的工作方式进行最少的更改,这是一个合理的选择。

    基本上将第 101 行和第 104 行的 print 更改为 Print(我认为这些是该函数唯一出现的地方;如果不是,编译器会很乐意指出其他的 :P)

  2. df.String 的定义中将参数更改为 df.print。这确实是微不足道的,但它具有改变默认行为的效果,这可能是好事,也可能不是好事。

    对于此选项,只需将第 101 行更改为 return df.print(true, false, true, true, 10, 70, "DataFrame") 或任何符合您需要的组合。

  3. 为您想要的每种打印格式添加一个新方法,并显式调用这些新方法。这比 #1 或 #2 更有效,但有些人可能更喜欢它。

就个人而言,我会选择 #1,但你的问题让 #2 听起来更像你想要的。