golang の仮パラメータの要件は何ですか?

青灯夜游
リリース: 2022-12-19 11:28:42
オリジナル
4714 人が閲覧しました

Go 言語の関数のパラメーターは仮パラメーターであり、その値がパラメーター呼び出し元によって提供されるローカル変数です。隣接する仮パラメーターの型が同じである場合、最初のいくつかの型はパラメータは省略可能です。最後のパラメータの型を記述する必要があるのは、構文「func funcName(仮パラメータ 1, 仮パラメータ 2 パラメータ タイプ 1, 仮パラメータ 3, 仮パラメータ 4 パラメータ タイプ 2, ...)」だけです。 (戻り値リスト) { / /ステートメントを実行...return 戻り値リスト}"。

golang の仮パラメータの要件は何ですか?

このチュートリアルの動作環境: 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)
}
ログイン後にコピー
プログラムを実行すると、コンソール出力は次のようになります。

golang の仮パラメータの要件は何ですか?関数 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)
}
ログイン後にコピー

プログラムを実行すると、コンソール出力は次のようになります:

golang の仮パラメータの要件は何ですか?
関数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を加算します。 golang の仮パラメータの要件は何ですか?

main() 関数で、この関数を呼び出し、変数 a のアドレスを渡します。change() 関数の実行後、変数 a の値を再度出力すると、a の値が変更されたことがわかります。 100増えて110になりました。

ここでのchange()関数は、aのアドレスを渡します。次に、change()関数のポインタ演算子を使用して、aのアドレスが指す変数を取得し、その値を変更します。実際、変更は変数 a の値そのものです。

Go 言語の関数パラメータの概要

Go 言語の関数のパラメータは仮パラメータです。つまり、値で渡す場合、パラメータは実際には実際のパラメータのコピーであり、実際の実際のパラメータではありません。

Go 言語では、隣接する関数パラメータの型が同じ場合、最初のいくつかのパラメータの型を省略でき、最後のパラメータの型のみを記述する必要があります。

プログラミング関連の知識について詳しくは、

プログラミング ビデオ

をご覧ください。 !

以上がgolang の仮パラメータの要件は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート