golang第一篇

C语言 1

介绍

Go是Google付出的一模一样种植编译型,可平行化,并具有垃圾回收功能的编程语言。

罗布·派克(Rob
Pike),罗伯特·格瑞史没有(Robert
Griesemer),及肯·汤普逊(unix的创造者)于2007年9月初始计划Go语言,稍后Ian
Lance Taylor, Russ
Cox加入项目蒙。Go语言是基于Inferno操作系统所出之。Go语言于2009年11月业内披露推出,成为开放源代码项目,并于Linux及Mac
OS
X平台及开展了落实,后多Windows系统下之落实。

 

描述

Go语言的语法接近C语言,但是对变量的声明凡殊的,其他语法不同之处是For循环和if判断语句)不需要为此小括号括起来。Go语言支持垃圾堆回收功能)。Go语言的相互模型是因东尼·霍尔的通信顺序进程(CSP)为根基,采取类似模型的别语言包括Occam和Limbo,但其也具备Pi运算的特征,比如通道传输。

同C++相比,Go语言并无包要特别处理、继承)、泛型、断言)、虚函数顶效果,但多了slice型、并发、渠道、垃圾回收、接口(interface)等特色的语言级支持。当然,Google对于泛型的态度还是挺开之,但于该语言的宽泛问题列表中,对于断言的是,则拿负面态度,同时也也友好非提供项目继承来辩。不同让Java,Go语言内嵌了关联数组)(也称为哈希表(hashes)或字典(dictionaries)),就比如字符串类型一样。

 C语言 2

go语言已经闹矣累累底优秀项目,如现风行的docker就是用golang编写的。推荐一个链接了解再多http://www.open-open.com/lib/view/open1396063913278.html

 

安配备

下载

https://golang.org/dl/

 

环境变量

GOROOT

PATH win32: 
%GOROOT%/bin

         linux:    
$GOROOT/bin

GOPATH以linux环境呢条例

export GOPATH=$HOME/WorkSpace/go      #
WorkSpace是本身专门存放代码的目
export PATH=$PATH:$GOPATH/bin

 

 

推荐编辑器vim

  windows环境:

  下载安装好vim编辑器后,在编排好之~/.vimrc,设置syntax on;

  下载vim插件文件,(以vim7.4吧例)复制到vim74/syntax/下,里面来不少*.vim文件,重新打开vim即可见效。

  C语言 3

  linux下安装插件应好,这里不再赘言。

 

推荐IDE: LiteIDE

C语言 4

 

次示例

HelloWorld!

package main

import "fmt"

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

  

goroutine多线程并行

// goroutine project main.go
package main

import (
    "fmt"
)

func f(from string){
    for i := 0;i<3;i++{
        fmt.Println(from,":",i)
    }
}

func main() {
    f("direct")

    go f("goroutine")

    go func(msg string){
        fmt.Println(msg)
    }("going")

    var input string
    fmt.Scanln(&input)
    fmt.Println("done")
}

运转结果:

C语言 5

 

golang调用系统命令echo helloworld

package main

import (
    "fmt"
    "os/exec"
    "sync"
    "strings"
)

func exe_cmd(cmd string, wg *sync.WaitGroup) {
    fmt.Println(cmd)
            parts := strings.Fields(cmd)
    out, err := exec.Command(parts[0],parts[1]).Output()
    if err != nil {
        fmt.Println("error occured")
        fmt.Printf("%s", err)
    }
    fmt.Printf("%s", out)
    wg.Done()
}

func main() {
    wg := new(sync.WaitGroup)
    commands := []string{"echo HelloWorld"}
    for _, str := range commands {
        wg.Add(1)
        go exe_cmd(str, wg)
    }
    wg.Wait()
}

  C语言 6