golang 沒有名字引數 Go 返回引數命名

2021-10-13 09:49:22 字數 2087 閱讀 4556

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。此時表明是乙個實現了介面的具體物件,只不過這...