这段代码使用了哪种类型的地址?

huangapple go评论86阅读模式
英文:

this code uses the address of type?

问题

在这段代码中,声明了一个名为Config的类型,它位于oauth包中的oauth.go文件的第99行。代码中建议的使用方式是创建一个指向Config类型的指针变量config,并进行相应的初始化操作。

在Go语言中,使用指针变量可以有效地传递和修改数据,而不是传递数据的副本。通过使用指针,可以直接访问和修改指向的数据,而不需要进行额外的拷贝操作。因此,在这段代码中,将Config类型的指针赋值给config变量,可以方便地对Config类型的数据进行操作。

此外,Go语言中的类型是为了编译器而存在的,但也可以在代码中使用。通过使用类型,可以定义变量、函数参数、返回值等,并对其进行相应的操作。在这段代码中,通过声明Config类型,可以创建该类型的变量,并对其进行初始化和操作。

希望这能帮助你理解这段代码的含义。如果还有其他问题,请随时提问。

英文:

the code at https://code.google.com/p/goauth2/source/browse/oauth/oauth.go#99 declares this type:

package oauth
...
type Config struct {...}
...

the suggested use of this is following:

var config = &oauth.Config{...}

I do not understand why this code takes the address of this type and why this is even possible in Go. I am a newbie. I thought that types are for the compiler, no? Please help.

答案1

得分: 4

《Go编程语言规范》

复合字面量

复合字面量用于构造结构体、数组、切片和映射的值,并在每次评估时创建一个新值。它们由值的类型后跟一个用大括号括起来的复合元素列表组成。一个元素可以是单个表达式或键值对。

给定声明:

type Point3D struct { x, y, z float64 }

可以写成:

origin := Point3D{}         // Point3D的零值

取一个复合字面量的地址会生成指向该字面量值的唯一实例的指针。

var pointer *Point3D = &Point3D{y: 1000}

这是使用指向复合字面量的指针的一个示例。

英文:

> The Go Programming Language Specification
>
> Composite literals
>
> Composite literals construct values for structs, arrays, slices, and
> maps and create a new value each time they are evaluated. They consist
> of the type of the value followed by a brace-bound list of composite
> elements. An element may be a single expression or a key-value pair.
>
> Given the declaration
>
> type Point3D struct { x, y, z float64 }
>
> one may write
>
> origin := Point3D{} // zero value for Point3D
>
> Taking the address of a composite literal generates a pointer to a
> unique instance of the literal's value.
>
> var pointer *Point3D = &Point3D{y: 1000}

It's an example of the use of a pointer to a composite literal.

答案2

得分: 3

这是获取Config类型的新实例的地址,而不是获取类型本身的地址。

英文:

This is taking the address of a new instance of the Config type, not the address of the type itself.

huangapple
  • 本文由 发表于 2014年6月12日 09:36:03
  • 转载请务必保留本文链接:https://go.coder-hub.com/24175214.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定