Go Structs: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 41: Line 41:


==Short Variable Declaration==
==Short Variable Declaration==
===Literal===


Struct literal initialization:
Struct literal initialization:
Line 47: Line 49:
ms := myStruct{i: 5, s: "something"}
ms := myStruct{i: 5, s: "something"}
</pre>
</pre>
===<tt>new()</tt>===


<tt>[[Go_Built-In_Function_new|new()]]</tt> initialization:
<tt>[[Go_Built-In_Function_new|new()]]</tt> initialization:

Revision as of 02:17, 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"}

new()

new() initialization:

msPtr := new(myStruct)

Note new() returns a pointer to the structure and not the structure itself.

Struct Literals

Fields

A field is always exported by the package it is enclosed in.