📌  相关文章
📜  ring golang - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:04:54.449000             🧑  作者: Mango

Ring Golang - Go 编程语言

Go语言Logo

Go 是由谷歌公司推出的开源编程语言,也被称为 Golang。它是一种现代化的编程语言,常用于构建高性能、可靠的网络服务和分布式系统。Golang 具有以下特点:

  • 编译型语言:与解释型语言相对。Go 代码需要被编译成机器码才能运行。

  • 强类型语言:需要在编译期就确定变量的类型。

  • 垃圾回收机制:使用自动垃圾回收(Garbage Collection)机制。

  • 并发支持Go 最大的特色之一,可以轻松地编写并发程序。

  • 简单易学:阅读起来简单,容易维护。

安装

运行以下命令下载并安装 Go 语言:

$ wget https://golang.org/dl/go1.15.2.linux-amd64.tar.gz
$ tar -C /usr/local -xzf go1.15.2.linux-amd64.tar.gz

在你的系统中设置 Go 的环境变量:

$ export PATH=$PATH:/usr/local/go/bin
Hello World

下面是一个简单的 hello world 程序:

package main

import "fmt"

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

运行这个程序:

$ go run helloworld.go
Hello, Golang!
Goroutine

GoroutinesGo 中并发的实现方式之一。它在语言层面上提供了轻量级的线程抽象,使并发编程变得非常容易。以下是使用 Goroutines 并发执行任务的例子:

package main

import (
    "fmt"
    "time"
)

func task(s string) {
    for i := 0; i < 5; i++ {
        time.Sleep(time.Millisecond * 500)
        fmt.Println(s)
    }
}

func main() {
    go task("Goroutine 1")
    go task("Goroutine 2")

    time.Sleep(time.Second * 3)
}

输出:

Goroutine 1
Goroutine 2
Goroutine 2
Goroutine 1
Goroutine 1
Goroutine 2
Goroutine 2
Goroutine 1
Goroutine 1
Goroutine 2
并发安全

由于 Go 语言的并发机制非常强大,因此它具有一些内置的并发安全机制,例如:

  • sync.Mutex

    sync.Mutex 是 Go 语言提供的基本的互斥锁。互斥锁用于保护代码区域,使其同时只能由一个 Goroutine 进行访问。

  • sync.WaitGroup

    sync.WaitGroup 用于等待若干个协程的结束。WaitGroup 保证了每一个 Goroutine 在结束之前,都必须调用 Done() 函数。

package main

import (
    "fmt"
    "sync"
)

var (
    count int
    mutex sync.Mutex
)

func incr(wg *sync.WaitGroup) {
    mutex.Lock()
    count++
    mutex.Unlock()
    wg.Done()
}

func main() {
    var wg sync.WaitGroup

    for i := 0; i < 1000; i++ {
        wg.Add(1)
        go incr(&wg)
    }

    wg.Wait()

    fmt.Println("Count:", count)
}

输出:

Count: 1000
小结

Go 是一个优秀的编程语言,具有简单易学、并发支持等多种优点。它已经在许多领域被广泛使用,例如构建网络服务、分布式系统、工具等。如果你正在寻找一门现代化的编程语言,我强烈推荐你学习 Go 语言。