工具方法-gutil

基本介绍

gutil组件封装了一些开发中常用的工具方法。

使用方式:

import "github.com/gogf/gf/v2/util/gutil"

接口文档:

https://pkg.go.dev/github.com/gogf/gf/v2/util/gutil

常用方法

Dump

  • 说明:Dump将values以更好的可读性的方式输出在标准输出中。

  • 格式:

Dump(values ...interface{})
  • 示例:
type User struct {
    Name string
    Age int
}

type Location struct {
    Province string
    City string
}

type UserInfo struct {
    U User
    L Location
}

func main() {
    userList := make([]UserInfo, 0)
    userList = append(userList, UserInfo{
        U: User{
            Name: "郭强",
            Age:  18,
        },
        L: Location{
            Province: "四川",
            City:     "成都",
        },
    })
    userList = append(userList, UserInfo{
        U: User{
            Name: "黄骞",
            Age:  18,
        },
        L: Location{
            Province: "江苏",
            City:     "南京",
        },
    })

    gutil.Dump(userList)
}

// Output:
[
    {
        U: {
            Name: "郭强",
            Age:  18,
        },
        L: {
            Province: "四川",
            City:     "成都",
        },
    },
    {
        U: {
            Name: "黄骞",
            Age:  18,
        },
        L: {
            Province: "江苏",
            City:     "南京",
        },
    },
]

DumpWithType

  • 说明:DumpWithType 和 Dump 类似,但是多了类型信息。

  • 格式:

DumpWithType(values ...interface{})
  • 示例:
type User struct {
    Name string
    Age int
}

type Location struct {
    Province string
    City string
}

type UserInfo struct {
    U User
    L Location
}

func main() {
    userList := make([]UserInfo, 0)
    userList = append(userList, UserInfo{
        U: User{
            Name: "郭强",
            Age:  18,
        },
        L: Location{
            Province: "四川",
            City:     "成都",
        },
    })
    userList = append(userList, UserInfo{
        U: User{
            Name: "黄骞",
            Age:  18,
        },
        L: Location{
            Province: "江苏",
            City:     "南京",
        },
    })

    gutil.DumpWithType(userList)
}

// Output:
[]main.UserInfo(2) [
    main.UserInfo(2) {
        U: main.User(2) {
            Name: string(6) "郭强",
            Age:  int(18),
        },
        L: main.Location(2) {
            Province: string(6) "四川",
            City:     string(6) "成都",
        },
    },
    main.UserInfo(2) {
        U: main.User(2) {
            Name: string(6) "黄骞",
            Age:  int(18),
        },
        L: main.Location(2) {
            Province: string(6) "江苏",
            City:     string(6) "南京",
        },
    },
]

DumpTo

  • 说明:DumpTo将value以自定义的输出形式写入到write中。

  • 格式:

DumpTo(writer io.Writer, value interface{}, option DumpOption)
  • 示例:

  • ``` package main

import ( "bytes" "fmt" "github.com/gogf/gf/v2/util/gutil" "io" )

type UserInfo struct { Name string Age int Province string City string }

type DumpWriter struct { Content string }

func (d *DumpWriter) Write(p []byte) (n int, err error) { buffer := bytes.NewBuffer(nil) buffer.WriteString("I'm Start!\n") buffer.WriteString(string(p)) buffer.WriteString("\nI'm End!\n")

d.Content = buffer.String()

return buffer.Len(), nil

}

func main() { u := UserInfo{ "a", 18, "b", "c", }

var dw io.Writer = &DumpWriter{}

gutil.DumpTo(dw, u, gutil.DumpOption{})

fmt.Println(dw.(*DumpWriter).Content)

}

// Output: I'm Start! { Name: "a", Age: 18, Province: "b", City: "c", } I'm End! ```