地址:https://github.com/noxue/utils
## 功能
方便不定参数的传出和取出的。 前提是要确定传入的参数个数和类型。
### 使用这个工具之前的代码
```
func test(args ...interface{}) {
var room Room
var uid int
var times int
var ok bool
room, ok = args[0].(Room)
if !ok {
glog.Fatalln("获取参数出错")
}
uid, ok = args[1].(int)
if !ok {
glog.Fatalln("获取参数出错")
}
times, ok = args[2].(int)
if !ok {
glog.Fatalln("获取参数出错")
}
// 这里使用room uid times 等变量值
}
```
### 使用后
```
func test(args ...interface{}) {
var room Room
var uid int
var times int
e := argsUtil.NewArgsUtil(args...).To(&room, &uid, ×)
if e != nil {
glog.Fatalln(e)
}
// 这里使用room uid times 等变量值
}
```
## 例子
```
package main
import (
"encoding/json"
"fmt"
"github.com/noxue/utils/argsUtil"
)
type Data struct {
Id int `json:"id"`
Name string `json:"name"`
User User `json:"user"`
Articles map[string]string `json:"articles"`
Admin bool `json:"admin"`
}
type User struct {
Age int `json:"age"`
Address string `json:"address"`
}
// 实现Stringer接口,格式化输出,方便展示
func (me *Data) String() string {
bs, e := json.MarshalIndent(me,"","\t")
if e != nil {
panic(e)
}
return string(bs)
}
func main() {
sd := Data{
Id: 100,
Name: "不学网",
Admin: true,
User: User{
Age: 20,
Address: "中国哈哈哈",
},
Articles: map[string]string{
"第一篇文章": "第一篇文章内容第一篇文章内容第一篇文章内容第一篇文章内容",
"第二篇文章": "第二篇文章内容第二篇文章内容第二篇文章内容第二篇文章内容",
},
}
var d Data
var i int
var b bool
var nums []int
e := argsUtil.NewArgsUtil(sd, 1,true,[]int{1,2,3,4}).To(&d, &i,&b,&nums)
if e != nil {
panic(e)
return
}
fmt.Println("int:",i)
fmt.Println("bool:",b)
fmt.Print("array:")
for _,v:=range nums{
fmt.Print(v,",")
}
fmt.Println()
fmt.Println("data:","\n",&d)
}
```
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传