返回对象中的所有内容

时间:2018-05-02 21:48:45

标签: go

我是Go的新手,所以我很抱歉这个noob问题。

在JavaScript console.log(window)中返回window内的所有对象。在PHP var_dump(new DateTime())中返回DateTime()内的所有对象。

Go中是否有一个函数会返回给定对象的所有对象?例如,如果给出Println,则应返回fmt

3 个答案:

答案 0 :(得分:2)

尝试在终端中执行go doc fmt以生成“fmt”包的说明及其导出的功能列表,或引用fmt package documentation处的https://golang.org。在go中,与大多数其他静态/编译语言一样,用户需要参考描述编程语言及其库的文档(或 docs )。将此与一些dynamic/scripting languages进行对比,这通常可以轻松查询任何对象以发现其可用属性。

在运行时,您可以使用%#v格式动词生成任意的有用打印输出,以生成值的go语法表示,例如

xs := []int{1, 2, 3}
fmt.Printf("OK: xs=%#v\n", xs)
// OK: xs=[]int{1, 2, 3}    

请注意,程序包“fmt”不是go语言中的,因此无法在运行时打印。

答案 1 :(得分:1)

GO OOP,& inheritance

Go没有对象,但我们有自定义类型和接口,我们可以将属性,函数和其他类型附加到。

你具体要做什么?如果您正在寻找var_dump

使用fmt.Println

someErr := fmt.Errorf("custom type error")
fmt.Println(someErr)

Println格式使用其操作数的默认格式并写入标准输出。

使用fmt.Printf

someErr := fmt.Errorf("custom type error")
fmt.Printf("This is an error:%v A num: %v A str", someErr, 19, "Stackoverflow")

Printf根据格式说明符格式化并写入标准输出。

使用fmt.Sprintf

someErr := fmt.Errorf("custom type error")
// someStr now contains the string formatted as shown below
someStr := fmt.Sprintf("This is an error:%v A num: %v A str", someErr, 19, "Stackoverflow")

Sprintf根据格式说明符进行格式化并返回结果字符串。

以下是输出var数据时个人偏好的示例: https://play.golang.org/p/8dpeE-fray_J

我希望这有帮助!

答案 2 :(得分:1)

在Go中可以做类似的事情,但不适用于所有人。

func main() {

    //arrays
    a := []int{1,2,3,4}
    fmt.Printf("%v\r\n", a)         //print [1 2 3 4]

    //maps
    b := map[string]int{
          "a":1,
          "b":2,
    }
    fmt.Printf("%v\r\n", b)        //print map[a:1 b:2]

    //structs
    c := struct{
          A int
          B int
    }{1,2}
    d := struct{
          C struct{
              A int 
              B int
          }
          D int
    }{c,2}
    fmt.Printf("%v\r\n", d)        //print {{1 2} 2}
}

见:https://play.golang.org/p/vzlCsOG497h

如果您传递 fmt 发生错误,因为它是一个包。错误是:

Error: use of package fmt without selector

我希望这也有所帮助!