go 返回引數命名
在golang中,命名返回引數通常稱為命名引數。golang允許在函式簽名或定義中為函式的返回或結果引數指定名稱。或者可以說這是函式定義中返回變數的顯式命名。基本上,它解決了在return語句中提及變數名稱的要求。
通過使用命名返回引數或命名引數,只能在函式末尾使用return關鍵字將結果返回給呼叫方。 當函式必須返回多個值時,通常使用此概念。
因此,為了使使用者感到舒適並增強**的可讀性,golang提供了此功能。
宣告命名的返回引數
要宣告命名結果或返回引數,只需使用函式簽名的返回型別部分。以下是在golang中宣告函式的一般語法。
宣告沒有命名返回引數的函式的語法:func function_name(parameter-list)(return_type){
// function body.....
在這裡,return_type是可選的,它包含函式返回的值的型別。如果在函式中使用return_type,則必須在函式中使用return語句。
使用命名的返回引數宣告函式的語法:func function_name(parameter-list)(result_parameter1 data__type,result_parameter2 data_type,…。){
//函式體…..
//返回
這(result_parameter1 data__type, result_parameter2 data_type, ....)是命名返回引數列表及其型別。您可以宣告n個命名的返回引數。
示例:在下面的程式中,func calculator(a, b int) (mul int, div int)**行包含命名的返回引數。函式末尾的return語句不包含任何引數。go編譯器將自動返回引數。
示例package main
import "fmt"
// main method
func main() {
//在這裡呼叫函式
//函式返回兩個值
m, d := calculator(105, 7)
fmt.println("105 x 7 = ", m)
fmt.println("105 / 7 = ", d)
// 具有命名引數的函式
func calculator(a, b int) (mul int, div int) {
//在這裡,簡單的賦值就可以
//並初始化它的值
mul = a * b
div = a / b
//這裡有return關鍵字
//沒有任何結果引數
return
輸出:105 x 7 = 735
105 / 7 = 15
重要事項如果所有命名的返回引數的型別是公共的或相同的,則可以指定公共資料型別。將下面的**與上面閱讀的示例進行比較,以便更好地理解。//有命名引數的函式
func calculator(a, b int) (mul, div int) {
此處,mul和div變數均為int型別。因此,您還可以宣告具有通用資料型別的命名引數,例如函式變數(即a和b)
使用命名返回引數將增強**的可讀性,因為只需讀取函式簽名就可以知道返回引數。
使用命名的返回引數後,return語句通常稱為"裸返"。
預設情況下,golang用零值定義所有命名變數,函式將能夠使用它們。如果函式未修改值,則將自動返回零值。
如果您將使用短宣告運算子(:=)初始化命名的返回引數,則將給出錯誤,因為它們已被go編譯器初始化。因此,您可以使用簡單的賦值方式(=)將值分配給命名的返回引數。//具有命名引數的函式
func calculator(a, b int) (mul int, div int) {
//在這裡,它將丟擲乙個錯誤
//因為已經定義了引數
//在函式簽名中
mul := a * b
div := a / b
//這裡有return關鍵字
//沒有任何結果引數
return
命名返回引數或裸返回語句僅適用於短函式簽名。對於更長的函式,顯式返回結果引數(不使用命名的返回引數)以保持**的可讀性。
對於命名返回引數,必須使用"裸返"的return語句。
Go 04 匿名變數(沒有名字的變數)
在編碼過程中,可能會遇到沒有名稱的變數 型別或方法。雖然這不是必須的,但有時候這樣做可以極大地增強 的靈活性,這些變數被統稱為匿名變數。匿名變數的特點是乙個下畫線 本身就是乙個特殊的識別符號,被稱為空白識別符號。它可以像其他識別符號那樣用於變數的宣告或賦值 任何型別都可以賦值給它 但任何賦給這個識別...
沒有名字 整除分塊優化dp
設 f i,j f i,j 表示 i i 位置填 j j 滿足條件的方案數,則 f i j k 1 mj f i 1,k f i,j k 1 jm f i 1,k 直接轉移複雜度 o n m2 o nm2 不可過 觀察到 mj jm 的取值僅有 o m o m 個,且轉移是字首和的形式,因此考慮使用...
為什麼匿名類是沒有名字的,明明有名字的解釋
首先大家看一下下面的 大家應該還算熟悉吧,他其實就是乙個匿名類。runnable runnable new runnable runnable是乙個介面,這個介面前面之所以new 了一下,並不能說明介面可以new,因為介面裡面重寫了介面中的抽象方法run。此時表明是乙個實現了介面的具體物件,只不過這...