相关疑难解决方法(0)

如何在Go中表示可选字符串?

我希望建模一个可以有两种可能形式的值:缺席或字符串.

执行此操作的自然方式是with Maybe String,or Optional<String>,or string option等.但是,Go没有这样的变体类型.

然后我想,在Java,C等之后,替代方案将是可空性,或者nil在Go中.但是,nil不是stringGo 中的类型成员.

搜索,然后我想使用该类型*string.这可能有效,但看起来很尴尬(例如,我不能采用字符串文字的地址,就像我可以获取结构文字的地址一样).

在Go中模拟这样一个值的惯用方法是什么?

string null variant go optional

9
推荐指数
2
解决办法
5044
查看次数

*string和sql.NullString之间的区别

我最近在Golang中一直在努力研究SQL NULL值.尝试不成功解组JSON对象使用后Decode()sql.NullString,我来到这个答案在计算器上:

在Golang中为JSON字段而不是空字符串分配null

使用字符串指针的解决方案似乎与Decode()和nil值完美配合.那么sql.NullString和之间的区别是什么*string?这只是零检查吗?

go

8
推荐指数
1
解决办法
7808
查看次数

在 go 中验证 http 请求的惯用方法

我需要验证我的 http 请求是否有两个参数:Start 和 End。目前,我设置了一个不应显示为任一参数的默认值,并检查它和其他无效值。然而,这感觉就像是黑客攻击。执行此操作的正确方法应该是什么?

这是我的代码:

type Request struct {
    Start int `json: "start"`
    End int `json: "end"`
}


func HandlePost(w http.ResponseWriter, r *http.Request) {
    body , _ := ioutil.ReadAll(r.Body)
    reqData := Request{Start: -1, End: -1} // < whats the correct way to do this
    json.Unmarshal(body, &reqData)  

    if reqData.Start < 0 && reqData.End < 0 {
        w.WriteHeader(http.StatusBadRequest)
        return
    }
    // rest of the logic
}
Run Code Online (Sandbox Code Playgroud)

validation http go

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

go ×3

http ×1

null ×1

optional ×1

string ×1

validation ×1

variant ×1