2 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
例如,只x轉(zhuǎn)義到堆,
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貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
不,我相信沒有這樣的伎倆。
當(dāng)我想避免在作用域中聲明不必要的變量,以及一次性操作時(shí),我有時(shí)會(huì)使用這種匿名函數(shù)調(diào)用:
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)
}
另一方面,如果您需要在許多情況下執(zhí)行類似的轉(zhuǎn)換,并且不一定總是由于相同的調(diào)用(如Atoi),您可以創(chuàng)建一個(gè)簡(jiǎn)單的函數(shù),它會(huì)進(jìn)行轉(zhuǎn)換并傳遞錯(cuò)誤:
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 關(guān)注
- 182 瀏覽
添加回答
舉報(bào)