去教程:什么是&在这条线上做什么?

时间:2016-08-11 01:03:56

标签: go

我正在做go教程,我对此练习有疑问...... https://tour.golang.org/moretypes/5

之前我只是简单地处理过基本C代码中的指针和地址。我的理解是,p = &Vertex{1, 2} // has type *Vertex行将新变量p指向Vertex的地址。

这不会重新定义struct的定义以设置X, Y int = 1, 2

以下是教程中的完整代码:

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)
}

1 个答案:

答案 0 :(得分:1)

var p = &Vertex{1, 2}执行以下操作:

  • 创建类型为Vertex的匿名变量,值为1 xy
  • p
  • 创建类型为*Vertex的变量Vertex(指针 到p
  • // File paths. const string inFile = "in.txt"; const string outFile = "out.txt"; // Read file. var inContents = File.ReadAllText(inFile); // Organize contents. var contentsArray = inContents.Replace(Environment.NewLine, ",") .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); // Sort contents. var sortedContents = contentsArray.OrderBy(c => c); // Write file. File.WriteAllText(outFile, string.Join(",", sortedContents)); 设置为指向匿名变量。

它不会影响类型的定义。