基本介绍

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

使用方式:

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

接口文档:

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

常用方法

Dump

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

  • 格式:

    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

  • 说明:DumpWithTypeDump 类似,但是多了类型信息。

  • 格式:

    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

  • 说明:DumpTovalue以自定义的输出形式写入到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!
Content Menu

  • No labels

5 Comments

  1. 郭强  

    确认一下. 是因为v2.0 dump的功能有增强,所以将原来的Export 方法拿掉了是吗. 如果想要把一些variable 的内容dump到log中. 之前是采用g.Export 方法.现在有更进阶方法吗 ?

    1. 是的,统一使用Dump*方法,可以通过DumpTo方法导出,给定接收接口对象即可。

  2. 谢谢,回复! 

    看来是做了更多的优化和扩充 

    👍 

    1. HI, DumpTo的示例已经补上. 可以参考下