首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构型免疫

结构型免疫
EN

Stack Overflow用户
提问于 2014-09-11 18:39:29
回答 2查看 80关注 0票数 0

我编写了一个关于为变量赋值的示例应用程序。请看下面的代码片段:

代码语言:javascript
复制
package main

import (
    "fmt"
)

func main() {

    cp := 344
    fmt.Println(cp)
    cp = 566565
    fmt.Println(cp)

    res := []struct {
        Email     string `json:"n.email"`
        Activated bool   `json:"n.activated"`
    }{}

    fmt.Println(res)

    res = []struct {
        Email string `json:"n.email"`
    }{}

    fmt.Println(res)
}

第一个cp变量,我赋值,然后再做它,它工作。最后,cp携带值566565。对我来说是不可变的。

第二个代码不工作,将新结构重新分配到res,我得到了编译器错误。

in :23:无法使用[]struct { Email string }文本(类型[]struct { Email string })作为类型[]struct { Email string;在赋值中使用激活bool }

结构是不变的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-11 18:45:50

第一个短变量声明 res :=确实设置了某种类型([]struct { Email string; Activated bool})。

如果要分配不同的类型(这里是不同的struct文字[]struct { Email string }),则需要一个不同的变量。

代码语言:javascript
复制
res2 = []struct {
        Email string `json:"n.email"`
}{}

fmt.Println(res2)

(如在play.golang.org中)

票数 2
EN

Stack Overflow用户

发布于 2014-09-11 18:47:12

不,你的类型不相容。res的类型是

代码语言:javascript
复制
[]struct {
    Email     string
    Activated bool
}

但你想给它一个

代码语言:javascript
复制
[]struct {
    Email string
    // notice no Activated!
}

片段的元素类型是该类型的一部分;即使某些字段似乎是共享的,也不能像这样进行混合和匹配。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25794794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档