小编elh*_*ari的帖子

如何验证字符串切片

我使用了包“gopkg.in/go-playground/validator.v9”并阅读了这篇文档。我想验证一段字符串。

有几点: 1 - 变量必须是切片

2 - 最大长度为 10

3 - 切片不应为空

4 - 元素切片是字符串

5 - 每个元素的最大长度为 12

这是代码:

var validate *validator.Validate

func main() {
    validate = validator.New()
    validateVariable()
}

func validateVariable() {
mySlice := []string{"111","222"}
errs := validate.Var(mySlice , "required,max=10,min=1")
if errs != nil {
    fmt.Println(errs) 
    return
}
Run Code Online (Sandbox Code Playgroud)

validation go

5
推荐指数
1
解决办法
2万
查看次数

反射:在ptr值上调用reflect.Value.FieldByName

我有一个像这个演示这样的数据结构。

type Family struct {
   first string
   last string
}
type Person struct {
   name string
   family *Family
}

func main(){
   per1 := Person{name:"niki",family:&Familys{first:"yam",last:"bari"}}
   Check(per1)
}
Run Code Online (Sandbox Code Playgroud)

和代码:

var validate *validator.Validate
func Check(data interface{}) {
    var v = reflect.ValueOf(data)

    if v.Kind() == reflect.Struct {
        fmt.Println("was a struct")
        v = v.FieldByName("family").FieldByName("last")
        fmt.Println(v)
    }
}
Run Code Online (Sandbox Code Playgroud)

当我不为家庭使用Point时,它会返回“ bari”并且没关系。但是使用point时,会出现此错误。

反射:在ptr值上调用reflect.Value.FieldByName

我进行了很多搜索,但找不到答案可以提供帮助。

go

2
推荐指数
1
解决办法
4993
查看次数

在 Go amqp 客户端中设置连接友好名称

我在我的应用程序中使用http://github.com/streadway/amqp包来处理到远程 RabbitMQ 服务器的连接。一切正常,工作正常,但我有一个问题。

连接的当前名称是“ip:port”,因此当存在来自同一 IP+端口的多个连接时,它们变得难以区分。如果您可以为每个连接指定一个名称,那就太好了。

有没有办法为每个连接设置一个不同的友好名称?

amqp go

2
推荐指数
1
解决办法
1343
查看次数

Golang:在多协程中发送关闭通道错误

我有 3 个通道一起获取数据。我的代码第一次完美运行,但是当我发送另一个数据时,出现错误:在关闭的通道上发送。在 func FillNotCheckedDeliveryCh 该行中,我关闭了通道。如果我不关闭它,应用程序将停止并且不会继续。

func main() {
    receiveBulkIdsCh := make(chan int64, 100)
    NotCheckedDeliveryCh := make(chan CommonType.BasicRequestParameters, 100)
    ResultCh := make(chan CommonType.MessageStateResult, 100)

    var wg sync.WaitGroup
    wg.Add(4)

    /* Every BulkIds that receive from queue , save in  receiveBulkIdsChan channel*/
    go func() {
        defer wg.Done()
        PopQueue(receiveBulkIdsCh)
    }()
    go func() {
        defer wg.Done()
        for BulkId := range receiveBulkIdsCh {
            FillNotCheckedDeliveryCh(data, NotCheckedDeliveryCh)
        }
    }()
    go func() {
        defer wg.Done()
        for item := range NotCheckedDeliveryCh {
            for msgStatus := range DoFuncGetMessageState(item) {
                ResultCh …
Run Code Online (Sandbox Code Playgroud)

go

1
推荐指数
1
解决办法
7705
查看次数

给定字段名称和值的映射,修改结构值

这是我的结构:

type TableFields struct {
    Name   string
    Family string
    Age    int
}

sample := TableFields{
    Name:   "bill",
    Family: "yami",
    Age:    25,
}
Run Code Online (Sandbox Code Playgroud)

这是我用来描述问题的非常简单的示例。

我想sample使用map接收到的键和值更改结构中的值。每次我收到的map键和值都会不同。如何使用map来编辑sample结构?

例如:

updateTheseFieldsWithTheseVals := make(map[string]string)
updateTheseFieldsWithTheseVals["family"] = "yamie"
// this is my way
for key,val := range updateTheseFieldsWithTheseVals {
    // sample.Family=yamie works, but is not the answer I am looking for
    // sample.key = val  *This solution is not possible*
    oldValue := reflect.Indirect(reflect.ValueOf(get)).FieldByName(key).String()
    fmt.Println(oldValue) // result is …
Run Code Online (Sandbox Code Playgroud)

go

0
推荐指数
1
解决办法
579
查看次数

标签 统计

go ×5

amqp ×1

validation ×1