兄弟連go教程(13)函式 返回值
不能⽤用容器物件接收多返回值。只能⽤用多個變數,或 "_" 忽略。
func test() (int, int) {
return 1, 2
}
func main() {
// s := make([]int, 2)
// s = test() // Error: multiple-value test() in single-value context
x, _ := test()
println(x)
}
多返回值可直接作為其他函式調⽤用實參。
func test() (int, int) {
return 1, 2
}
func add(x, y int) int {
return x + y
}
func sum(n ...int) int {
var x int
for _, i := range n {
x += i
}
return x
}
func main() {
println(add(test()))
println(sum(test()))
}
命名返回引數可看做與形參類似的區域性變數,最後由 return 隱式返回。
func add(x, y int) (z int) {
z = x + y
return
}
func main() {
println(add(1, 2))
}
命名返回引數可被同名區域性變數遮蔽,此時需要顯式返回。
func add(x, y int) (z int) {
{ // 不能在⼀一個級別,引發 "z redeclared in this block" 錯誤。
var z = x + y
// return // Error: z is shadowed during return
return z // 必須顯式返回。
}
}
命名返回引數允許 defer 延遲調⽤用通過閉包讀取和修改。
func add(x, y int) (z int) {
defer func() {
z += 100
}()
z = x + y
return
}
func main() {
println(add(1, 2)) // 輸出: 103
}
顯式 return 返回前,會先修改命名返回引數。
func add(x, y int) (z int) {
defer func() {
println(z) // 輸出: 203
}()
z = x + y
return z + 200 // 執⾏行順序: (z = z + 200) -> (call defer) -> (ret)
}
func main() {
println(add(1, 2)) // 輸出: 203
}
尹成老師
QQ77025077
微信18510341407
所有視訊在尹成學院
www.yinchengxueyuan.com
尹成百度雲請聯絡QQ475318423
相關文章
- 兄弟連go教程(14)函式 - 匿名函式Go函式
- 兄弟連go教程(11)函式 - 函式定義Go函式
- 兄弟連go教程(12)函式 - 變參Go函式
- 兄弟連go教程(15)函式 - 延遲呼叫Go函式
- 兄弟連go教程(15)函式 - 錯誤處理Go函式
- 兄弟連go教程(10)表示式 - 控制流Go
- 兄弟連go教程(9)表示式-初始化Go
- 兄弟連go教程(5)字串Go字串
- 兄弟連go教程(8)表示式--保留字;運算子Go
- 兄弟連go教程(6)指標Go指標
- 兄弟連go教程(2)型別-常量Go型別
- 兄弟連go教程(3)基本型別Go型別
- 兄弟連go教程(16)資料 - ArrayGo
- 兄弟連go教程(17)資料 - SliceGo
- 兄弟連go教程(18)資料 - MapGo
- 兄弟連go教程(19)資料 -StructGoStruct
- 兄弟連go教程(1)型別-變數Go型別變數
- 兄弟連go教程(7)自定義型別Go型別
- 兄弟連go教程(19)資料 - 匿名欄位Go
- 兄弟連go教程(19)資料 - ⾯物件導向Go物件
- 兄弟連go教程(4)型別-引用及轉換Go型別
- GO語言————6.2 函式引數與返回值Go函式
- 物聯網學習教程—函式的返回值函式
- 函式的返回值函式
- 0305函式返回值函式
- 函式的祕密之 函式返回值函式
- Go 讀者提問:Go 函式返回值命名有存在的意義嗎?Go函式
- 清華尹成帶你實戰GO案例(32)Go 函式多返回值Go函式
- 清華尹成帶你實戰GO案例(34)Go 函式命名返回值Go函式
- GO語言————5.2 測試多返回值函式的錯誤Go函式
- 清華尹成帶你實戰GO案例(13)Go range函式Go函式
- GO語言————6.9 應用閉包:將函式作為返回值Go函式
- 07:函式之函式的引數和返回值函式
- 第 8 節:函式-函式巢狀呼叫與返回值函式巢狀
- Go 函式多返回值錯誤處理與error 型別介紹Go函式Error型別
- 《MySQL 入門教程》第 13 篇 CASE 表示式與控制流函式MySql函式
- C語言中函式的返回值C語言函式
- 13-解構函式函式