go入门笔记 from 小白 | 青训营

83 阅读3分钟

Go语言是一种高性能、高并发的编程语言,具有简单的语法和平缓的学习曲线。它拥有丰富的标准库和完善的工具链,能够实现静态链接和快速编译,并且具备跨平台的特性。此外,Go语言还拥有垃圾回收机制,能够自动管理内存。

在开始使用Go语言进行开发之前,我们需要先安装Go环境并配置相关的集成开发环境(IDE)。除了在本地搭建开发环境外,还可以使用云开发环境进行Go语言的开发。

Go语言的基础语法包括了包、导入、变量

Hello World

package main

import "fmt"

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

变量声明和使用

package main

import "fmt"

func main() {
	var name string = "Alice"
	age := 25

	fmt.Printf("Name: %s, Age: %d\n", name, age)
}

if-else语句、循环

package main

import "fmt"

func main() {
	num := 5

	if num > 0 {
		fmt.Println("Positive number")
	} else if num < 0 {
		fmt.Println("Negative number")
	} else {
		fmt.Println("Zero")
	}

	for i := 0; i < 5; i++ {
		fmt.Println(i)
	}

	arr := [3]int{1, 2, 3}

	for index, value := range arr {
		fmt.Printf("Index: %d, Value: %d\n", index, value)
	}
}

switch-case语句、数组、切片、映射、range迭代、函数、指针、结构体、错误处理、

package main

import (
	"errors"
	"fmt"
)

func divide(x, y float64) (float64, error) {
	if y == 0 {
		return 0, errors.New("division by zero")
	}
	return x / y, nil
}

func main() {
	result, err := divide(10, 2)
	if err != nil {
		fmt.Println("Error:", err)
	} else {
		fmt.Println("Result:", result)
	}
}

字符串操作、JSON处理、时间处理、数字解析、进程信息等内容。

Go语言具有天生的并发特性,能够充分发挥多核优势,实现高效运行。它通过协程(Goroutine)实现并发编程,可以开启多个协程来执行任务。协程是一种用户态的轻量级线程,相比于传统的线程更加高效。Go语言提倡通过通信共享内存(通过通道)来实现协程之间的通信,而不是通过共享内存来实现通信。

在Go语言中,可以使用通道(Channel)来进行协程之间的通信。通道可以通过make函数创建,可以指定缓冲区的大小。通过使用defer和close函数,我们可以实现对通道的关闭操作。

package main

import (
	"fmt"
	"time"
)

func worker(id int, jobs <-chan int, results chan<- int) {
	for j := range jobs {
		fmt.Println("Worker", id, "started job", j)
		time.Sleep(time.Second)
		fmt.Println("Worker", id, "finished job", j)
		results <- j * 2
	}
}

func main() {
	numJobs := 5
	jobs := make(chan int, numJobs)
	results := make(chan int, numJobs)

	numWorkers := 3
	for w := 1; w <= numWorkers; w++ {
		go worker(w, jobs, results)
	}

	for j := 1; j <= numJobs; j++ {
		jobs <- j
	}
	close(jobs)

	for r := 1; r <= numJobs; r++ {
		result := <-results
		fmt.Println("Result:", result)
	}
}


为了保证并发安全,Go语言提供了一些同步机制,如互斥锁(Mutex)和等待组(WaitGroup)。通过互斥锁可以实现对临界区的互斥访问,而等待组则可以实现对一组协程的等待。

在Go语言中,项目的依赖管理非常重要。目前有三种常用的依赖管理方式:GOPATH、Go Vendor和Go Module。GOPATH是Go语言中默认的依赖管理方式,但无法解决多个项目需要同一个包的不同版本的问题。Go Vendor通过将依赖包的副本放置在项目目录下的vendor文件夹中来解决版本冲突的问题。而Go Module则通过在项目中引入go.mod文件来管理依赖包的版本,并通过go get和go mod等工具来管理依赖关系。

总之,Go语言是一门简单易学、高性能、高并发的编程语言,具有丰富的标准库和完善的工具链。通过学习Go语言的基础语法和掌握依赖管理的方法,我们可以使用Go语言进行并发编程和开发各种应用程序。