分配后是否可以进行转换?

我想知道是否有任何技巧可以避免 xv 标识符/分配。基本上像x, err := T1(strconv.Atoi("1"))


package main


import "fmt"

import "strconv"


   type T1 int


    func main() {

        xv, err := strconv.Atoi("1")

        if err != nil {

            panic(err)

        }

        x := T1(xv)

        fmt.Println(x)

    }


拉丁的传说
浏览 145回答 2
2回答

慕雪6442864

例如,只x转义到堆,package mainimport (    "fmt"    "strconv")type T1 intfunc 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

陪伴而非守候

不,我相信没有这样的伎俩。当我想避免在作用域中声明不必要的变量,以及一次性操作时,我有时会使用这种匿名函数调用:package mainimport "fmt"import "strconv"type T1 intfunc main() {    x, err := func() (T1, error) {        x, err := strconv.Atoi("1")        return T1(x), err    }()    fmt.Println(err, x)}另一方面,如果您需要在许多情况下执行类似的转换,并且不一定总是由于相同的调用(如Atoi),您可以创建一个简单的函数,它会进行转换并传递错误:package mainimport "fmt"import "strconv"type T1 intfunc resToT1(n int, err error) (T1, error) {    return T1(n), err}func main() {    x, err := resToT1(strconv.Atoi("1"))    fmt.Println(err, x)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go