[英]Function with 1/2 values and short variable declaration assigned twice to same variable
我對以下代碼有兩個問題
emptyinterface.(int)
可以返回一個或兩個值,如何定義函數來實現這種效果?ok
已經使用短變量聲明被聲明了兩次,為什么在這種情況下是可能的?package main
import (
"fmt"
)
func main() {
var emptyinterface interface{}
emptyinterface=4
i1:=emptyinterface.(int)
fmt.Println(i1)
i2,ok:=emptyinterface.(int)//<- how the function is defined such that it can return either 1 (i1) or 2 values (i2,ok)?
fmt.Println(i2,ok)
i3,ok:=emptyinterface.(string) //<--why I can reassign to ok, which has assign previously?
fmt.Println(i3,ok)
}
這不是功能,而是語言功能。 你不能寫一個這樣做的函數,但編譯器編寫者可以創建一些這樣做的語法。
A :=
如果左側沒有新變量則無效。 如果至少聲明了一個新變量,則是允許的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.