golang第一篇

7explore-share · · 3235 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

介绍

GoGoogle开发的一种编译型,可平行化,并具有垃圾回收功能的编程语言。

罗布·派克(Rob Pike),罗伯特·格瑞史莫(Robert Griesemer),及肯·汤普逊(unix的创造者)于2007年9月开始设计Go语言,稍后Ian Lance Taylor, Russ Cox加入项目中。Go语言是基于Inferno操作系统所开发的。Go语言于2009年11月正式宣布推出,成为开放源代码项目,并在LinuxMac OS X平台上进行了实现,后追加Windows系统下的实现。

 

描述

Go语言的语法接近C语言,但是对于变量的声明是不同的,其他语法不同之处是For循环if判断语句不需要用小括号括起来。Go语言支持垃圾回收功能。Go语言的并行模型是以东尼·霍尔通信顺序进程(CSP)为基础,采取类似模型的其他语言包括OccamLimbo,但它也具有Pi运算的特征,比如通道传输。

与C++相比,Go语言并不包括如异常处理继承泛型断言虚函数等功能,但增加了slice型、并发、渠道、垃圾回收、接口(interface)等特性的语言级支持。当然,Google对于泛型的态度还是很开放的,但在该语言的常见问题列表中,对于断言的存在,则持负面态度,同时也为自己不提供类型继承来辩护。不同于Java,Go语言内嵌了关联数组(也称为哈希表(hashes)或字典(dictionaries)),就像字符串类型一样。

 

go语言已经有了不少的优秀项目,如现在流行的docker就是用golang编写的。推荐一个链接了解更多http://www.open-open.com/lib/view/open1396063913278.html

 

安装配置

下载

https://golang.org/dl/

 

环境变量

GOROOT

PATH win32:  %GOROOT%/bin

         linux:     $GOROOT/bin

 

推荐编辑器vim

推荐IDE: LiteIDE

 

程序示例

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")
}

运行结果:

 

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()
}

  

 


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:7explore-share

查看原文:golang第一篇

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3235 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传