2 回答
TA贡献1812条经验 获得超5个赞
例如,只x转义到堆,
package main
import (
"fmt"
"strconv"
)
type T1 int
func atoi(a string) int {
i, err := strconv.Atoi(a)
if err != nil {
panic(err)
}
return i
}
func main() {
x := T1(atoi("1"))
fmt.Println(x)
}
输出:
1
TA贡献1757条经验 获得超8个赞
不,我相信没有这样的伎俩。
当我想避免在作用域中声明不必要的变量,以及一次性操作时,我有时会使用这种匿名函数调用:
package main
import "fmt"
import "strconv"
type T1 int
func main() {
x, err := func() (T1, error) {
x, err := strconv.Atoi("1")
return T1(x), err
}()
fmt.Println(err, x)
}
另一方面,如果您需要在许多情况下执行类似的转换,并且不一定总是由于相同的调用(如Atoi),您可以创建一个简单的函数,它会进行转换并传递错误:
package main
import "fmt"
import "strconv"
type T1 int
func resToT1(n int, err error) (T1, error) {
return T1(n), err
}
func main() {
x, err := resToT1(strconv.Atoi("1"))
fmt.Println(err, x)
}
- 2 回答
- 0 关注
- 144 浏览
添加回答
举报