延迟类型映射



我正在尝试取消引用通道,并使用通道中的有效负载来检查映射中是否有条目。

如果映射不是类型,它就可以工作,但如果映射是类型,我总是会得到类型<map>不是表达式的错误。

type writechan chan UserProfile
type usersmap map[string]UserProfile
var  myuserprofile UserProfile
myuserprofile = <-myuserchannel
var username = myuserprofile.name
if _, ok := usersmap[username]; ok {
fmt.Println("Already registered ")
} else {
usersmap[username] = myuserprofile
}

错误消息说类型usersmap不是if行中的一个表达式。如果我不使用类型usermap,而是使用普通的map say-map[string]字符串,它就可以正常工作。

type usersmap map[string]UserProfile

这是一个类型声明,它不会创建名为usersmap的变量。在这个类型声明之后,您可以使用usersmap(类型(标识符来创建一个如下的变量:

var umap usersmap

初始化它:

umap = make(usersmap)

或者在一行中:

var umap = make(usersmap)

或者使用带有初始化的简短变量声明:

umap := usersmap{}

此外,要创建映射类型的变量,您不必创建新类型,您可以简单地写:

var umap = make(map[string]UserProfile)

最新更新