Golang-11:ポインタ2


ポインタ?


ポインタに対して一定の理解があると仮定し,省略して行う.
まず,コアは変数を格納するメモリの「アドレス値」を利用する.
主に変数の外部修正に使用されます.
正しいポインタを使用すると、プログラムの効率が向上します.
それをもっと速くします.
まず文法を見て、次のようにします.
package main

import "fmt"

func main() {
	x := 3000
	y := "만큼 사랑해!"
	pointerX := &x	// 주소값
	pointerY := &y

	fmt.Println(pointerX)
	fmt.Println(pointerY)
	fmt.Println(*pointerX)	// 역 참조
	fmt.Println(*pointerY)

}

まずGoのポインタ構文はC/C++とほぼ同じです
&:メモリアドレスを返します
*:参照アドレス値を反転してメモリを検索し、値を返します.
ポインタに関する簡単な資料がたくさんあります(検索してみます)
ここでの違いはゴミ収集器を使っているのでメモリ管理も便利です
また、空のポインタはnilに初期化されます

ポインタによる更新

package main

import "fmt"

func update(i *int) {
	*i = 20
}

func main() {
	x := 3000
	y := "만큼 사랑해!"
	pointerX := &x // 주소값
	pointerY := &y

	update(pointerX)

	fmt.Println(pointerX)
	fmt.Println(pointerY)
	fmt.Println(*pointerX) // 역 참조
	fmt.Println(*pointerY)

}

update funcはpointerXが持つアドレス値をコピーします.
は、コピーされたアドレス値が持つ値を逆参照して値を変更します.
このコードは、データ・ストリームを複雑にする可能性があります.注意が必要です.
これはゴミ収集器の性能に関係しています
ポインタを使用して変数を変更する必要があります.
関数がポインタをインタフェースと予想する場合のみ
ジェニーン・リックがまだいないからだ.
それでも、パフォーマンスの向上には多くのメリットがあります.
今後のアルゴリズムに関する報告では,性能の違いを見てみる.