假设我想定义一个带有命名结果参数的函数,其中一个是string. 此函数在内部调用另一个函数,该函数返回此类字符串的字节表示。有没有办法在不使用临时变量的情况下转换结果?func main() { out, _ := bar("Example") fmt.Println(out)}func foo(s string) ([]byte, error) { return []byte(s), nil}func bar(in string) (out string, err error) { // is there a way to assign the result to out // casting the value to string in the same line // istead of using the tmp variable? tmp, err := foo(in) if err != nil { return "", err } return string(tmp), nil}这个想法是,如果可能的话,我可以将代码缩短为func bar(in string) (out string, err error) { // assuming there is a way to cast out to string out, err := foo(in) return}是否有意义?
2 回答
三国纷争
TA贡献1804条经验 获得超7个赞
1 行代码不会产生很大的不同,但是让一个tmp变量实际存在于整个函数中是一个问题。显然,临时变量应该是临时的。为此,您可以tmp在新范围内声明。
var s string;
{
tmp, err := foo(in)
s = string(tmp)
}
//tmp no longer exists here.
//Other code is not disturbed by a useless tmp variable.
我可能只是在这里很愚蠢,因为我是 Golang 的新手,我从 C 中学到了这个技巧,结果它也适用于 Golang。
- 2 回答
- 0 关注
- 197 浏览
添加回答
举报
0/150
提交
取消