登录
首页 >  Golang >  Go问答

隐藏数据结构中的元素

来源:stackoverflow

时间:2024-03-14 16:57:28 419浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《隐藏数据结构中的元素》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

我有一个应用程序,它在数据库中创建一个用户并返回他的信息(带有结构)。我想将用户模型发送到客户端(网络服务器的响应),无需密码(或我不希望客户端获得的更多信息)。 正确的方法是什么?创建一个“UIUser”结构,其中包含我想要发送给客户端的唯一字段并将原始模型转换为该结构?或用户界面?

当然,如果你能给我一个例子来解决这个问题。


解决方案


一般来说,拥有视图结构可能是一个好主意,因为您不想将 api 格式与内部表示耦合起来。无论如何,如果您只是想以懒惰的方式执行此操作并避免序列化密码,则始终可以使用 - json 结构标记:

package main

import (
    "fmt"
    "encoding/json"
    "log"
)

type user struct {
    ID      int     `json:"id"`
    Name    string  `json:"name"`
    Pass    string  `json:"-"`
}

func main() {
    u := &user{123, "John", "supersecret"}
    b, err := json.Marshal(u)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(string(b))
}

Playground

我见过一些执行您所描述的操作的示例。一个不同的结构,仅包含所需的数据和两个结构之间的转换函数。根据您的应用程序,还可以将字段设置为私有或公共。例如,golang 的 json 或 yaml 解析器仅填充结构体的公共字段。

如果您具有更多 oop 背景,您始终可以向结构中编写 getter-setter 方法。

最简单的方法似乎是您在问题中写的方法。

本篇关于《隐藏数据结构中的元素》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>