-1
私はこのチュートリアルをやっていますが、私はこのエクササイズについて質問しました。https://tour.golang.org/moretypes/5チュートリアル:この行の&は何ですか?
私は簡単なCコードで簡単にポインタとアドレスで作業しました。私の理解は、p = &Vertex{1, 2} // has type *Vertex
という行が新しい変数p
をアドレスVertex
に向けているということです。
が、これはその後、ここでX, Y int = 1, 2
を設定するstruct
の定義を再定義することはないでしょうチュートリアルからの完全なコードです:
package main
import "fmt"
type Vertex struct {
X, Y int
}
var (
v1 = Vertex{1, 2} // has type Vertex
v2 = Vertex{X: 1} // Y:0 is implicit
v3 = Vertex{} // X:0 and Y:0
p = &Vertex{1, 2} // has type *Vertex
)
func main() {
fmt.Println(v1, p, v2, v3)
}
ok私は匿名の可変部分が欠けていました。好奇心のために、この匿名変数にアクセスする方法はありますか?これを行う実践的なアプリケーションは何ですか? – deltaskelta
ポインタでのみアクセスできます。状況が特定の型へのポインタを必要とするときに、これが行われることがよくあります。例えば、パッケージは、型の初期化されたインスタンスへのポインタを返す 'New()'関数を定義するかもしれません。これは 'return&MyType {field1:val1、field2:val2}'のようなもので行うことができます。 –
私が参照した使用方法の詳細:https://golang.org/doc/effective_go.html#composite_literals –