我刚开始学习Go语言。据我所知,Go语言的封装是基于包(package)级别的。我有一个简单的web控制器使用案例。我有一个结构体,作为JSON对象传入,并被解码为该结构体类型。
type User struct{
Name String `json:"name"`
//Other Variables
}
现在可以通过json.Unmarshal([]byte)将json转换为用户结构类型。但是,其他包也可以访问此用户结构。如何确保其他包只能访问与用户相关的方法。
我能想到的一个解决方案是:
type User struct{
name String
}
type UserJSON struct{
Name String `json:"name"`
}
func DecodeJSONToUser(rawJSON []byte) (User,error) {
var userJSON UserJSON
err := json.Unmarshal(rawJSON,&userJSON)
//Do error handling
return User{name:userJSON.Name},nil
}
有没有一种GO式的方法可以达到这一目的?