go语言,Let's go(golang)(一)

我认为go语言是一个不但易学易用,而且非常强大的语言,是一个非常值得投资的语言。

安装

国外的golang.org大陆访问不了,下载go语言安装包要去golang中国或者go语言中文网

环境变量配置

  1. GOROOT环境变量,指向go语言的安装目录
  2. GOPATH环境变量,指向自己的工作区,这个目录下应该包含bin,pkg,src分别放置可执行文件,库文件,源代码

IDE

推荐使用vscode,跨linux,win,mac平台,另外go语言也能完美的运行在这3个平台上,可以简单的实现跨平台开发。vscode上还有一整套go语言的辅助工具,包括非常实用的代码提示工具等

第一个程序

来吧,开始第一个程序

package main

import (
    "fmt"
    "sync"
)

func main() {

    var hw = "hello go programming language"
    var wg sync.WaitGroup

    wg.Add(1)
    go func() {
        fmt.Printf("ansynchronous printf '%s'\n", hw)
        wg.Done()
    }()

    wg.Wait()
    fmt.Println("program terminated")
}

go语言的hello world,就是这么直接

第一行

package main

这表示该程序所属的包为main包,所有go源代码都必须被包含在指定的包中,但是main包是很特殊的,go会将这个包中的代码构建成可执行程序,而其他名字的包会被构建成库

import (
    "fmt"
    "sync"
)

顾名思义,导入包,fmt和sync都是go语言“标准库”中的包,分别用来处理格式化输出和同步操作,go语言的“标准库”非常庞大,功能全面,随着学习的深入,我们还会接触到很多其他的包

var hw = "hello go programming language"
var wg sync.WaitGroup

这两行声明了2个变量,可以看到,go语言声明变量是非常简洁的,编译器会帮我们判断变量的类型,而go语言和C++,C#语言一样,变量必须有类型。wg变量相信写过多线程程序的朋友应该一看就知道他的意义,简单来讲,就是等待“特定条件”达成,在这里,就是等待所有goroutine结束,goroutine又是什么呢?goroutine是go语言在语言层面支持并发的一种功能,合理使用goroutine可以方便快捷的进行多线程程序开发。

wg.Add(1)
go func() {
    fmt.Printf("ansynchronous printf '%s'\n", hw)
    wg.Done()
}()
wg.Wait()

在上面的代码的第二行,我们就启动了一个goroutine去执行我们指定的一个匿名函数,在启动前,我们对wg进行了Add(1)操作,表示有一个goroutine在执行中,在最后执行wg.Wait()表示主线程要等待所有的goroutine执行完成才能结束程序,匿名函数中,我们不但输出了hw变量中的内容,而且在最后执行了wg.Done()告诉主线程,我的事情都搞定了,不用等了。

如果我们的程序中不包含wg,则有可能因为主线程过快结束导致无法在goroutine中输出hw的值,这是go语言中多线程同步的一种方式。

构建,执行

将代码复制到main.go文件中,放到GOPATH的src目录下的foo文件夹中,并在powershell中执行go install foo,我们的程序就会生成到bin目录下了,运行一下看看吧

转载于:https://www.cnblogs.com/devgl/p/6603117.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值