登录
首页 >  Golang >  Go问答

golang中结构体的获取操作

来源:stackoverflow

时间:2024-04-27 08:48:38 240浏览 收藏

本篇文章向大家介绍《golang中结构体的获取操作》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

问题内容

下面是一个简单的程序。但我不明白的是,get 操作是如何工作的?我没有定义任何 get 方法,但 form.get 正在工作。怎么办?

真诚的, 苏达桑.d

package main

import (
       "fmt"
       "net/url"
)

type errors map[string]string;

type Form struct {
    url.Values;
    Errors errors;
}

func  New (data url.Values) (*Form) {
    return &Form {
        data,
        errors(map[string]string{}),
    };
}


func main () {
   k1 := url.Values{};
   k1.Set("arvind","superstar");
   k1.Set("title","Arvind");
   form := New(k1);
   fmt.Println("The title is", form.Get("arvind"));
}

正确答案


因为在 Form 结构中,您没有明确为 url.Values 字段提供名称,所以该字段被称为嵌入。嵌入字段的名称会自动设置为类型的非限定名称,即在本例中,url.Values 字段的名称变为 Values。此外,嵌入字段类型的方法(如果有)和字段(如果它是具有任何结构的结构)被认为被提升到嵌入结构。提升的方法或字段可以通过嵌入结构直接访问,而无需指定嵌入字段的名称。即代替 form.Values.Get("arvind") 您可以执行 form.Get("arving")

请记住,两个表达式 form.Values.Get("arvind")form.Get("arving") 在语义上是等效的。在这两种情况下,您都会在 form.Values 字段上调用 ​​Get 方法,即使在第二个表达式中省略了字段名称。

来自 Struct types 的语言规范:

以上就是《golang中结构体的获取操作》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>