我编写了一个关于为变量赋值的示例应用程序。请看下面的代码片段:
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 }
结构是不变的吗?
发布于 2014-09-11 18:45:50
第一个短变量声明 res :=确实设置了某种类型([]struct { Email string; Activated bool})。
如果要分配不同的类型(这里是不同的struct文字[]struct { Email string }),则需要一个不同的变量。
res2 = []struct {
Email string `json:"n.email"`
}{}
fmt.Println(res2)(如在play.golang.org中)
发布于 2014-09-11 18:47:12
不,你的类型不相容。res的类型是
[]struct {
Email string
Activated bool
}但你想给它一个
[]struct {
Email string
// notice no Activated!
}片段的元素类型是该类型的一部分;即使某些字段似乎是共享的,也不能像这样进行混合和匹配。
https://stackoverflow.com/questions/25794794
复制相似问题