Go Structs: Difference between revisions
(→Fields) |
(→Fields) |
||
Line 68: | Line 68: | ||
=Fields= | =Fields= | ||
Fields can be access with the <tt>[[Go_Concepts_-_Operators#.|.]]</tt> operator. | Fields can be access with the <tt>[[Go_Concepts_-_Operators#.|.]]</tt> operator. | ||
Note that the <tt>.</tt> operator works with a regular struct variable as well as with a pointer to a struct: the compiler knows how to compensate for both of these cases. | |||
<font color=red>A field is always [[Go Concepts - Packages#Exported_Identifiers|exported]] by the package it is enclosed in.</font> | <font color=red>A field is always [[Go Concepts - Packages#Exported_Identifiers|exported]] by the package it is enclosed in.</font> |
Revision as of 03:09, 30 March 2016
Internal
Overview
A struct is a user-defined type that contains named fields.
Are all users can define (in terms of types) structs, or there are other user-defined types?
Definition
The struct type definition is introduced by the type keyword, to indicated that this is a user-defined type, followed by the type name and the keyword struct. Each field has a name and a type.
type myStruct struct { i int s string }
Fields with the same types can be collapsed:
type myStruct struct { ... i, j, k int ... }
Initialization
Long Variable Declaration
var ms myStruct
If no explicit initialization follows, all the struct's fields are initialized with their zero value.
Short Variable Declaration
Literal
Struct literal initialization:
ms := myStruct{i: 5, s: "something"}
There is a shorter struct literal where the name of the fields are omitted, provided that the order is maintained:
ms := myStruct{5, "something"}
new()
new() initialization:
msPtr := new(myStruct)
Note new() returns a pointer to the structure and not the structure itself.
Fields
Fields can be access with the . operator.
Note that the . operator works with a regular struct variable as well as with a pointer to a struct: the compiler knows how to compensate for both of these cases.
A field is always exported by the package it is enclosed in.