GO語言多值返回

2021-08-03 06:06:09 字數 904 閱讀 3297

go乙個非常特別的特性(對於編譯語言而言)是函式和方法可以返回多個值(python和perl同樣也可以)。

這可以用於改進一大堆在c程式中糟糕的慣例用法:修改引數的方式,返回乙個錯誤(例如遇到eof則返回-1)。在go中,write返回乙個計數值和乙個錯誤:「是的,你寫入了一些位元組,但是由於裝置異常,並不是全部都寫入了。」。

os包中的*file.write是這樣宣告的:

func

(file *file) write

(b byte)

(n int, err error)

如同文件所述,它返回寫入的位元組數,並且當n != len(b)時,返回非nil的error。這是go中常見的方式。元組沒有作為原生型別出現,所以多返回值可能是最佳的選擇。你可以精確的返回希望的值,而無須過載域空間到特定的錯誤訊號上。

go函式的返回值或者結果引數可以指定乙個名字,並且像原始的變數那樣使用,就像輸入引數那樣。如果對其命名,在函式開始時,它們會用其型別的零值初始化。如果函式在不加引數的情況下執行了return語句,結果引數會返回。用這個特性,允許(再一次的)用較少的**做更多的事。

名字不是強制的,但是它們可以使得**更加健壯和清晰:這是文件。例如命名int型別的nextpos返回值,就能說明哪個代表哪個

func nextint(b byte, pos int) (value, nextpos int)
由於命名結果會被初始化並關聯於無修飾的return,它們可以非常簡單並且清晰。這裡有一段io.readfull的**,很好的運用了它:

func readfull(r reader, buf byte) (n int, err error) 

return

}

Go語言多值替換的HTML模板例項分析

這裡通過兩種方式提供基於html模板的多變數值替換。另外附加乙個陣列迭代的示例。傳入map實現多值替換 複製 如下 package main import html template os func main hello,main page args1 map string string t.exe...

Go語言示例 函式返回多個值

go語言中函式可以返回多個值,這和其它程式語言有很大的不同。對於有其它語言程式設計經驗的人來說,最大的障礙不是學習這個特性,而是很難想到去使用這個特性。簡單如交換兩個數值的例子 package main import fmt func swap a int,b int int,int func ma...

JMeter 如何迴圈使用介面返回的多值?

在用jmeter做介面測試的時候,經常會遇到這樣一種情況 乙個介面請求返回了多個值,然後下乙個介面想迴圈使用前乙個介面的返回值 第二種情況 只想迴圈請求前乙個介面返回值中的隨機不定長度的某一些值 並不想用全部的 今天,我就和大家講解一下這兩種情況我們如何用jmeter來實現的。先說第一種情況 乙個介...