勤有功
戏无益

Go 语言简介(下)— 特性

leon阅读(1699)评论(0)

希望你看到这篇文章的时候还是在公交车和地铁上正在上下班的时间,我希望我的这篇文章可以让你利用这段时间了解一门语言。当然,希望你不会因为看我的文章而错过站。呵呵。

如果你还不了解Go语言的语法,还请你移步先看一下上篇——Go语言简介(上):语法

goroutine

GoRoutine主要是使用go关键字来调用函数,你还可以使用匿名函数,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main
import "fmt"
func f(msg string) {
    fmt.Println(msg)
}
func main(){
    go f("goroutine")
    go func(msg string) {
        fmt.Println(msg)
    }("going")
}

我们再来看一个示例,下面的代码中包括很多内容,包括时间处理,随机数处理,还有goroutine的代码。如果你熟悉C语言,你应该会很容易理解下面的代码。

你可以简单的把go关键字调用的函数想像成pthread_create。下面的代码使用for循环创建了3个线程,每个线程使用一个随机的Sleep时间,然后在routine()函数中会输出一些线程执行的时间信息。

(更多…)

Go 语言简介(上)— 语法

leon阅读(1641)评论(0)

周末天气不好,只能宅在家里,于是就顺便看了一下Go语言,觉得比较有意思,所以写篇文章介绍一下。我想写一篇你可以在乘坐地铁或公交车上下班时就可以初步了解一门语言的文章。所以,下面的文章主要是以代码和注释为主。只需要你对C语言,Unix,Python有一点基础,我相信你会在30分钟左右读完并对Go语言有一些初步了解的。

Hello World

文件名 hello.go
1
2
3
4
5
6
7
package main //声明本文件的package名
import "fmt" //import语言的fmt库——用于输出
func main() {
    fmt.Println("hello world")
}

运行

你可以有两种运行方式,

解释执行(实际是编译成a.out再执行)
1
2
$go run hello.go
hello world
编译执行
1
2
3
4
5
6
7
$go build hello.go
$ls
hello hello.go
$./hello
hello world

自己的package

你可以使用GOPATH环境变量,或是使用相对路径来import你自己的package。

Go的规约是这样的:

(更多…)