GNU Free Documentation License . .

Go

( «Go ( )»)
: ,
Go
Golang.png
:

, ,

:

:

2009

():

,

:

1[1] (28 2012)

:

, ,  

:

gc (8g, 6g, 5g), gccgo

BSD

:

http://golang.org

Go  , , Google[2]. Go 2007 , , [3] Inferno. 2009 . FreeBSD, OpenBSD, Linux, Mac OS X Windows.[4]

[]

, , Google, Go!, . . . .  2003 .[5] , Go[5].

[]

Go , , . Go   Go ( ). , , :

func g()
{                  // 
}

if x {
}
else {             // 
}

, , .

//Go                           C++
  var v1 int                // int v1;
  var v2 string             // const std::string v2;  ()
  var v3 [10]int            // int v3[10];
  var v4 []int              // int* v4;  ()
  var v5 struct { f int }   // struct { int f; } v5;
  var v6 *int               // int* v6;  (    )
  var v7 map[string]int     // unordered_map* v7;  ()
  var v8 func(a int) int    // int (*v8)(int a);

(0 int, string, nil ).

:

var (
        i int
        m float
)

Go . ,   .

var v = *p

, .

v1 := v2 //  var v1 = v2

Go , :

i, j = j, i    //    i  j.

:

func f(i, j, k int, s, t string) string { }

; :

func f(a, b int) (int, string) {
        return a+b, ""
}

:

func incTwo(a, b int) (c, d int) {
        c = a+1
        d = b+1
        return
}

, , :

first, second := incTwo(1, 2) // first = 2, second = 3

for if.

(garbage collection), .

Go :

, [3] , , , .

[]

Go CSP (.) Occam Limbo,[3], -, .

Go (go-) go, go- ( ). go- , -, , go- go- (, , ) .

func server(i int) {
        for {
                print(i)
                time.Sleep(10)
        }
}
go server(1)
go server(2)


go .

var g int
go func(i int) {
        s := 0
        for j := 0; j < i; j++ { s += j }
        g = s
}(1000)

go- ( chan), . <- ,   <- .

[] Go -

class Go , ( int) .

type newInt int

, . receiver ( this C++).

type myType struct { i int }
func (p *myType) get() int { return p.i }
func (p *myType) set(i int) { p.i = i }

- , Go ( C++). Go , , , , .

type myInterface interface {
        get() int
        set(i int)
}

myType myInterface, .

. « » ( .) , , :

« . , - . . , , . »

- Go GOOP[6].

[]

Go:

[]

«Hello, World!» Go.

package main
 
import "fmt"
 
func main() {
        fmt.Println("Hello, World!")
}

Unix echo:

package main
 
import (
        "os"
        "flag" //    
)
 
var omitNewLine = flag.Bool("n", false, "    ")
 
const (
        Space = " "
        NewLine = "\n"
)
 
func main() {
        flag.Parse() //      
        var s string
        for i := 0; i < flag.NArg(); i++ {
                if i > 0 {
                        s += Space
                }
                s += flag.Arg(i)
        }
        if !*omitNewLine {
                s += NewLine
        }
        os.Stdout.WriteString(s)
}

[]

[]