Go 言語の関数のパラメーターは仮パラメーターであり、その値がパラメーター呼び出し元によって提供されるローカル変数です。隣接する仮パラメーターの型が同じである場合、最初のいくつかの型はパラメータは省略可能です。最後のパラメータの型を記述する必要があるのは、構文「func funcName(仮パラメータ 1, 仮パラメータ 2 パラメータ タイプ 1, 仮パラメータ 3, 仮パラメータ 4 パラメータ タイプ 2, ...)」だけです。 (戻り値リスト) { / /ステートメントを実行...return 戻り値リスト}"。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
Go 言語の関数パラメータ
Go 言語の関数のパラメータは仮パラメータです。つまり、値渡しの場合です。 、渡されるパラメータは、実際には実際の実パラメータではなく、実パラメータのコピーです。仮パラメータは、パラメータの呼び出し元によって値が提供されるローカル変数です。
Go 言語では、隣接する関数パラメータの型が同じ場合、最初のいくつかのパラメータの型を省略でき、最後のパラメータの型のみを記述する必要があります。
func funcName(param1, param2 paramType1, param3, param4 paramType2, ...)(returnVal returnType){ // 执行语句... return 返回值列表 }
説明
パラメータ param1 とパラメータ param2 は同じ型なので、param1 の後のパラメータの型を省略して直接置くことができます。 param2 以降の書き込みタイプ。
パラメータ param3 とパラメータ param4 は同じ型なので、param3 の後のパラメータの型を省略し、param4 の直後に型を記述できます。
returnVal returnType
は、関数の戻り値の変数名と型を説明する戻り値のリストです。関数が名前のない変数を返すか、戻り値を返さない場合、戻り値リスト 括弧は省略可能です。
#ケース
#関数を使用して 2 つの数値の最大公約数を見つけるpackage main
import (
"fmt"
)
func gcdNormal(x, y int) int {
var n int
if x > y {
n = y
} else {
n = x
}
for i := n; i >= 1; i-- {
if x%i == 0 && y%i == 0 {
return i
}
}
return 1
}
func main() {
//用函数,实现计算两个数的最大公约数
gcd := gcdNormal(10,20)
fmt.Println("Gcd =", gcd)
}
関数 gcdNormal を定義し、2 つの int 型パラメーター a と b を渡します。 int型の変数を返します。この関数はパラメータaとパラメータbの最大公約数を求めるロジックを全数法で実装していますが、パラメータaとパラメータbの型はどちらもint型なので、パラメータa以降の型を省略してパラメータに直接記述します。 b. 後で。
main() 関数では、gcdNormal 関数を呼び出して 2 つのパラメーター 10 と 20 を渡し、gcd 変数を使用して gcdNormal 関数によって返された値を受け入れ、最後に Println() 関数を使用しました。最終結果を印刷します。
関数パラメータは仮パラメータですGo 言語の関数パラメータは仮パラメータであり、関数パラメータを変更しても実際のパラメータには影響しません
package main import ( "fmt" ) func change(a int) { a += 100 } func main() { //Go语言的函数参数是函数参数,对函数参数的修改不会影响实参 a := 10 change(a) fmt.Println("a =", a) }
プログラムを実行すると、コンソール出力は次のようになります:
関数change()を定義し、int型パラメータaを渡します。関数本体、for この関数のパラメータは、100 を加算する演算を実装します。
main() 関数で、この関数を呼び出し、変数 a を渡します。change() 関数の実行後、変数 a の値を再度出力すると、a の値がまだ 10 であることがわかります。 、100ではなく、その後は110です。
Go 言語では、関数のパラメーターは仮パラメーター、つまり実際のパラメーターのコピーであるため、変更されるものは実際のパラメーターではないため、 a の値は変更されません。
#関数パラメータを介して実際のパラメータを変更する
Go 言語関数は、関数パラメータを介して実際のパラメータを変更する場合、ポインタ型を使用する必要があります
package main import ( "fmt" ) func change(a *int) { *a += 100 } func main() { //Go语言的函数要通过函数参数修改实参,必须要使用指针类型 a := 10 change(&a) fmt.Println("a =", a) }
関数change()を定義し、intポインタ型のパラメータaを渡し、関数本体で関数のパラメータに100を加算します。
main() 関数で、この関数を呼び出し、変数 a のアドレスを渡します。change() 関数の実行後、変数 a の値を再度出力すると、a の値が変更されたことがわかります。 100増えて110になりました。 ここでのchange()関数は、aのアドレスを渡します。次に、change()関数のポインタ演算子を使用して、aのアドレスが指す変数を取得し、その値を変更します。実際、変更は変数 a の値そのものです。 Go 言語の関数パラメータの概要Go 言語の関数のパラメータは仮パラメータです。つまり、値で渡す場合、パラメータは実際には実際のパラメータのコピーであり、実際の実際のパラメータではありません。
Go 言語では、隣接する関数パラメータの型が同じ場合、最初のいくつかのパラメータの型を省略でき、最後のパラメータの型のみを記述する必要があります。 プログラミング関連の知識について詳しくは、プログラミング ビデオ
をご覧ください。 !以上がgolang の仮パラメータの要件は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。