英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论