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语言相对于其他语言的优势
-
并发支持: Go在语言级别内置了轻量级的协程(Goroutines)和通道(Channels),使得并发编程变得非常简单。这使得开发者可以轻松地编写高效且安全的并发程序。
-
简洁易用: Go语言的设计注重简洁性,它有少量的关键字和简单的语法,易于学习和使用。这种简洁性有助于减少代码的复杂性,提高开发效率。
-
快速编译: Go的编译速度非常快,因此可以更快地进行迭代开发和测试,提高开发效率。
-
内存管理: Go具有自动垃圾回收机制,减少了开发人员需要手动管理内存的负担。这有助于避免内存泄漏和其他与内存相关的问题。
-
性能: Go的运行时性能非常好,编译后的代码执行速度快,适用于构建高性能的应用程序。
-
跨平台支持: Go支持多种操作系统和体系结构,可以轻松进行交叉编译,从而实现跨平台部署。
-
强大的标准库: Go的标准库非常丰富,涵盖了网络、文件操作、加密、并发等各个方面,让开发者可以更快地构建应用程序。
-
静态类型系统: 静态类型系统有助于在编译时捕获类型错误,提高代码的可靠性和维护性。
-
开发效率: 由于Go的简洁语法和强大的工具链,开发者可以更专注于解决问题,而不必过多关注语言的琐碎细节。
-
开源: Go是一个开源项目,拥有一个活跃的社区,使得开发者可以共享代码、交流经验并获得帮助。
学习go语言的心得
相对于之前学习的java 给我很直观的感觉就是真的很简洁,而且在依赖管理方面,很迅速就可以拉取并没有之前哪些复杂的操作,而且效率是真的高,我同样用go实现一个项目的业务逻辑,我并没有用专业的工具去测试时间,只是肉眼可见的快,可能以后go语言会成为我主要的方向!