为结构分配另一个结构

tommyd456:

我有一个RegistrationRequest结构:

type RegistrationRequest struct {
    Email    *string
    Email2   *string        
    Username *string
    Password *string
    Name     string
}

Email2再次输入电子邮件值在哪里以验证用户输入的内容正确无误。

我也有一个用户结构:

type User struct {
    Email    *string
    Username *string
    Password *string
    Name     string           
}

当然,没有必要存储Email2超出注册的范围。

所以我有两个变量:requ-每个结构一个。是否可以将req结构分配给该u结构,以便所有公共字段都将存在于该u结构中?

icza:

使用简单分配,您不能这样做,因为即使的字段User是的子集RegistrationRequest,它们完全是2种不同的类型,并且可分配性规则不适用。

您可以编写一个使用反射(reflect包)的函数,并将所有字段从复制requ,但这很丑陋(且效率低下)。

最好是重构您的类型,并RegistrationRequest可以嵌入 User

如果您具有类型的值,RegistrationRequest这意味着您也已经具有值User

type User struct {
    Email    *string
    Username *string
    Password *string
    Name     string
}

type RegistrationRequest struct {
    User  // Embedding User type
    Email2 *string
}

func main() {
    req := RegistrationRequest{}
    s := "[email protected]"
    req.Email = &s

    s2 := "testuser"
    req.Username = &s2

    u := User{}
    u = req.User
    fmt.Println(*u.Username, *u.Email)
}

输出:(在Go Playground上尝试

testuser [email protected]

另外请注意,由于您的结构包含指针,因此在复制时struct,将复制指针值而不是指针值。我不确定为什么在这里需要指针,最好将所有字段声明为非指针。

还要注意,嵌入并不是真正的要求,它只是使您的类型及其用法更加平滑。User也可能是的“普通”字段RequistrationRequest,例如:

type RegistrationRequest struct {
    Usr User // This is just an ordinary field, not embedding
    Email2 *string
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将一个结构的字段更新为另一个结构

读入一个结构会覆盖另一个结构

在GO中从一个结构复制到另一个结构

如何将嵌套结构成型为没有嵌套循环的另一个结构?

Golang将结构分配给另一个结构字段不起作用

在C中将一个结构分配给另一个

无法从另一个脚本分配结构等于结构

在另一个结构内创建结构数组

如何显示一个结构的另一个结构的列表?

包含对另一个结构的引用的C结构

内存泄漏-如何为在另一个结构中作为线程参数传递的Typdef结构分配内存?

如何在Rust中将一个结构映射到另一个结构?

循环创建结构并分配给IDL中的另一个结构

如果我将POD结构分配给另一个POD结构,是否存在内存泄漏?

嵌套结构/在另一个结构中使用结构

用于定义另一个结构的typedef结构?

一个结构的Assignin字段而不是另一个结构

在另一个结构内为一个结构数组分配内存

将结构的一部分分配给c中的另一个结构

将一个结构分配给C中一个结构内的另一个结构

将一个结构分配给另一个结构会导致垃圾回收

扩展另一个结构内部的结构

无法将结构变量分配给另一个结构变量

C,如何为另一个结构中的结构数组分配正确的空间量?

访问另一个结构中的结构字段

结构中的指针指向另一个结构

使用 MFC 将一个结构复制到另一个结构

将对象数组处理为另一个结构的函数?

另一个结构中的结构 Solidity