当前位置: 首页 > 面试题库 >

打印时如何取消对字段的引用?

李俊雅
2023-03-14
问题内容

http://play.golang.org/p/joEmjQdMaS

package main

import "fmt"

type SomeStruct struct {
    somePointer *somePointer
}
type somePointer struct {
    field string
}

func main() {
    fmt.Println(SomeStruct{&somePointer{"I want to see what is in here"}})
}

这样会打印一个内存地址 {0x10500168}

有没有办法打印它:

{{"I want to see what is in here"}}

这主要是出于调试目的,如果我有一个带有30个指针字段的结构,我不想为30个字段中的每一个都执行一个println来查看其中的内容。


问题答案:

有一个很棒的软件包,称为go-spew。正是您想要的。

package main

import (
  "github.com/davecgh/go-spew/spew"
)

type (
  SomeStruct struct {
    Field1 string
    Field2 int
    Field3 *somePointer
  }
  somePointer struct {
    field string
  }
)

func main() {
  s := SomeStruct{
    Field1: "Yahoo",
    Field2: 500,
    Field3: &somePointer{"I want to see what is in here"},
  }
  spew.Dump(s)

}

将为您提供以下输出:

(main.SomeStruct) {
 Field1: (string) "Yahoo",
 Field2: (int) 500,
 Field3: (*main.somePointer)(0x2102a7230)({
  field: (string) "I want to see what is in here"
 })
}


 类似资料:
  • 这是用C++语言编写的代码。 为什么在第一个cout语句中,程序尝试打印直到它找到一个空字符,而在第二个语句中,它只打印一个字符?

  • 问题内容: 我是Java的新手。我说,我有一个类 人 。我要列印 上面的代码给出如下输出: 这有什么意义? 该对象是否具有某种唯一标识? 我可以自定义吗?我的意思是编写自己的函数,该函数在打印时会输出? 如果是这样,我该怎么做? 问题答案: 如果要打印任何对象的有意义的内容,则必须实现自己的方法,该方法将覆盖parent()类的方法。默认情况下,所有类(无论您创建什么)都扩展类。 样例代码: 输出

  • 问题内容: 这段代码: 印刷品: 没有实现,因此它不是a 并打印其本机表示形式。但是对于我要打印的每个结构都非常繁琐。更糟糕的是,如果添加或删除某些字段,则必须更新。有没有更简单的方法来打印带有其字段的结构的结构? 问题答案: 这就是该包的实现方式,因此您无法更改。 但是,您可以编写一个使用反射(包)来遍历struct的字段的辅助函数,并可以在具有此类方法的字段上调用该方法。 示例实现: 现在,当

  • 问题内容: 我正在尝试学习如何将软件包与go-sql-driver一起使用。我编写了以下简单程序,它可以工作,但是我无法弄清楚如何打印多个字段。 该数据库具有三个字段,和。我查询“ title1”,这是值之一,但我想打印“ title”和“ body”的值。我该怎么办? 问题答案: 要读取和而不是,请首先更改该语句。 更改 至 然后更改读数。更改 至 这将读取两个列。 要打印字段,您可以执行

  • 问题内容: 我读到这是为了在打印语句后取消换行符,您可以在文本后加上逗号。这里的示例看起来像Python2。 如何在Python 3中完成呢? 例如: 需要更改什么以便将它们打印在同一行上? 问题答案: 问题问:“ 如何在Python 3中完成? ” 在Python 3.x中使用以下结构: 这将生成: 有关更多信息,请参见此Python文档: - 除了 : 此外,该功能还提供了一个参数,该参数使您

  • 问题内容: 我有一个类似“Tanım”的Unicode字符串,以某种方式编码为“ Tan%u0131m”。我如何将这个编码后的字符串转换回原始的unicode。显然urllib.unquote不支持unicode。 问题答案: %uXXXX是一种非标准的编码方案,尽管实施仍继续存在于JavaScript领域,但已被w3c拒绝。 更常见的技术似乎是对字符串进行UTF-8编码,然后使用%XX使用%XX