Go言語のポインタを関数パラメータとして
Go言語では、関数にポインタを渡すことができます。関数定義のパラメータをポインタ型に設定するだけで済みます。
以下の実例は、関数にポインタを渡し、関数呼び出し後に関数内の値を変更する方法を示しています。
実例
package main
import "fmt"
func main() {
/* ローカル変数の定義 */
var a int = 100
var b int= 200
fmt.Printf("交換前の a の値 : %d\n", a )
fmt.Printf("交換前の b の値 : %d\n", b )
/* 値を交換するために関数を呼び出す */
* &a は変数 a のアドレスを指す
* &b は変数 b のアドレスを指す
*/
swap(&a, &b);
fmt.Printf("交換後の a の値 : %d\n", a )
fmt.Printf("交換後の b の値 : %d\n", b )
}
func swap(x *int, y *int) {
var temp int
temp = *x /* x のアドレスの値を保存する */
*x = *y /* y を x に代入する */
*y = temp /* temp を y に代入する */
}
import "fmt"
func main() {
/* ローカル変数の定義 */
var a int = 100
var b int= 200
fmt.Printf("交換前の a の値 : %d\n", a )
fmt.Printf("交換前の b の値 : %d\n", b )
/* 値を交換するために関数を呼び出す */
* &a は変数 a のアドレスを指す
* &b は変数 b のアドレスを指す
*/
swap(&a, &b);
fmt.Printf("交換後の a の値 : %d\n", a )
fmt.Printf("交換後の b の値 : %d\n", b )
}
func swap(x *int, y *int) {
var temp int
temp = *x /* x のアドレスの値を保存する */
*x = *y /* y を x に代入する */
*y = temp /* temp を y に代入する */
}
上記の実例の実行結果は次のとおりです。
交换前 a 的值 : 100 交换前 b 的值 : 200 交换后 a 的值 : 200 交换后 b 的值 : 100その他の拡張
Goのポインタ