第六届字节跳动青训营学习:go语言基础语法和特性|青训营

71 阅读4分钟

go语言基础语法及其特性|青训营

一些使用上的特性

作为我的第二个语言,相比与java有maven来统一管理依赖 现在的go这样的:

import (
    "bytes"
    "context"
    "fmt"
    "github.com/minio/minio-go/v7"
    "github.com/minio/minio-go/v7/pkg/credentials"
    "log"
    "net/http"
)

刚开始用起来还有点不习惯,但是现在完全ok,其实这样看起来会更加清晰! 用go语言进行一个简单打印输出

import "fmt"

func main() {
    fmt.Println("hello word")
}

语法特性

go语言并不用在每一条语句的后面强制加分号进行结尾,就算不加也不会报错,其实这也体现了go语言注重简洁、高效和易用

静态类型系统

变量在声明时必须指定其类型,并且类型在编译时检查,有助于提前捕获类型相关的错误。

垃圾回收

它拥有垃圾回收机制,可以自动释放不再使用的内存,减少了程序员需要手动处理内存的工作量。

协程

Go引入了轻量级的协程概念,称为Goroutines。这是一种并发执行的方式,可以在单个线程内创建大量的协程,从而实现高效的并发编程。

通道

通道是用于协程之间通信的机制,可以在不同协程之间传递数据。它能够确保并发操作的安全性,避免竞争条件。

其他特性

内置并发支持

Go通过协程(Goroutines)和通道(Channels)实现并发编程,使得编写高效的并发程序变得容易。

代码举例:

package main

import (
	"fmt"
	"time"
)
func main() {
	go printNumbers()
	go printLetters()

	// 等待一段时间以保证协程有足够时间执行
	time.Sleep(2 * time.Second)
}
func printNumbers() {
	for i := 1; i <= 5; i++ {
		fmt.Printf("%d ", i)
		time.Sleep(100 * time.Millisecond)
	}
}
func printLetters() {
	for i := 'a'; i < 'e'; i++ {
		fmt.Printf("%c ", i)
		time.Sleep(100 * time.Millisecond)
	}
}

go语言相对于其他语言的优势

  1. 并发支持: Go在语言级别内置了轻量级的协程(Goroutines)和通道(Channels),使得并发编程变得非常简单。这使得开发者可以轻松地编写高效且安全的并发程序。

  2. 简洁易用: Go语言的设计注重简洁性,它有少量的关键字和简单的语法,易于学习和使用。这种简洁性有助于减少代码的复杂性,提高开发效率。

  3. 快速编译: Go的编译速度非常快,因此可以更快地进行迭代开发和测试,提高开发效率。

  4. 内存管理: Go具有自动垃圾回收机制,减少了开发人员需要手动管理内存的负担。这有助于避免内存泄漏和其他与内存相关的问题。

  5. 性能: Go的运行时性能非常好,编译后的代码执行速度快,适用于构建高性能的应用程序。

  6. 跨平台支持: Go支持多种操作系统和体系结构,可以轻松进行交叉编译,从而实现跨平台部署。

  7. 强大的标准库: Go的标准库非常丰富,涵盖了网络、文件操作、加密、并发等各个方面,让开发者可以更快地构建应用程序。

  8. 静态类型系统: 静态类型系统有助于在编译时捕获类型错误,提高代码的可靠性和维护性。

  9. 开发效率: 由于Go的简洁语法和强大的工具链,开发者可以更专注于解决问题,而不必过多关注语言的琐碎细节。

  10. 开源: Go是一个开源项目,拥有一个活跃的社区,使得开发者可以共享代码、交流经验并获得帮助。

学习go语言的心得

相对于之前学习的java 给我很直观的感觉就是真的很简洁,而且在依赖管理方面,很迅速就可以拉取并没有之前哪些复杂的操作,而且效率是真的高,我同样用go实现一个项目的业务逻辑,我并没有用专业的工具去测试时间,只是肉眼可见的快,可能以后go语言会成为我主要的方向!