gpt4 book ai didi

go - "constructor"函数应该返回错误还是空值?

转载 作者:IT王子 更新时间:2023-10-29 01:08:31 25 4
gpt4 key购买 nike

给定一个构造函数,例如

func NewSomething(name, color string) *Something {
s := Something{name, color}
return &s
}

此函数是否应包括健全性检查,例如 &name == nillen(name) == 0?如果这个函数应该包含完整性检查,那么构造函数应该返回什么值? nil 值,还是错误 (errors.New(...))?下面包含一个示例。

func NewSomething(name, color string) *Something {
if &name == nil || len(name) == 0 {
return nil
}

if &color== nil || len(color) == 0 {
return nil
}

s := Something{name, color}
return &s
}

最佳答案

返回一个错误。使用可分辨的值(例如 nil)来指示错误不是惯用的。

func NewSomething(name, color string) (*Something, error) {
if name == "" {
return nil, errors.New("bad name")
}

if color == "" {
return nil, errors.New("bad color")
}

s := Something{name, color}
return &s, nil
}

旁白:表达式 &anyVariable == nil 的计算结果始终为 false。将检查简化为 len(color) == 0color == ""

关于go - "constructor"函数应该返回错误还是空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34774615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com