登录
首页 >  Golang >  Go问答

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

来源:Golang技术栈

时间:2023-04-30 09:50:03 290浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《打印时如何取消引用字段?》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

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"
 })
}

终于介绍完啦!小伙伴们,这篇关于《打印时如何取消引用字段?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>