青训营X豆包MarsCode技术训练营第二课 | Go 语言入门指南:基础语法和常用特性解析

56 阅读4分钟

(本文为 方向三:实践记录以及工具使用 之 后端实践选题 ,且为同方向三的上一篇的第二部分)

GO 语言后端学习笔记:

一、基础知识点

以下为第二课中所学的相关知识点,主要是 GO 语言在错误处理、fmt、json、字符串函数、随机数、时间等方面的内容。

  1. 错误处理

Go 语言使用内置的error类型来表示错误。函数可以返回一个值和一个错误对象,调用者可以检查错误对象来确定操作是否成功。例如:result, err := someFunction(). - 通过if err!= nil语句来检查是否发生错误,并进行相应的处理。

  1. fmt

fmt包提供了格式化输入和输出的函数。例如:fmt.Println("Hello, world!")用于打印输出,fmt.Scan(&variable)用于从标准输入读取数据。 - 可以使用格式化字符串来控制输出的格式,如fmt.Printf("%d", number)

  1. json

Go 语言的encoding/json包用于处理 JSON 数据。可以将结构体编码为 JSON 字符串,也可以将 JSON 字符串解码为结构体。 - 例如:json.Marshal(data)用于编码,json.Unmarshal(jsonData, &data)用于解码。

  1. 字符串函数

Go 语言的strings包提供了许多用于处理字符串的函数。例如:strings.Contains用于检查一个字符串是否包含另一个字符串,strings.Join用于将字符串切片连接成一个字符串等。

  1. 随机数

math/rand包用于生成随机数。可以使用rand.Intn(n)生成一个 0 到n - 1之间的随机整数。 - 如果需要生成更随机的数,可以使用rand.Seed(time.Now().UnixNano())设置随机数种子。

  1. 时间

time包提供了处理时间的函数。可以获取当前时间、计算时间差、格式化时间等。 - 例如:time.Now()获取当前时间,time.Since(startTime)计算时间差。

二、个人思考分析

在学习了这些内容后,我深刻体会到了 Go 语言在后端开发中的强悍之处。相较于同为后端开发常用语言的Java、C++等,go语言显然更为便利、快捷。这些错误处理机制可以使得代码更加健壮,能够及时发现和处理错误;fmt包的格式化输入输出功能非常方便,可以轻松地输出调试信息和用户界面;json包的使用使得与其他系统的数据交互变得简单高效;随机数和时间函数在一些特定的应用场景中非常有用,例如游戏开发和定时任务,不过值得一提的是,某些版本的go语言中随机数的生成会出现一些差错,比如生成时会固定序列,也就是随机数生成后就固定,而不是根据每次生成改变,这一差错可以通过结合时间函数,构造与时间轴绑定的随机数序列生成函数来解决。

总的来说,Go 语言的这些功能使得后端开发更加高效、可靠和灵活。它的简洁语法和强大的标准库也使得我们作为后端程序员能够快速构建出高质量的后端系统。

三、代码示例

以下是仿照课上王克纯老师基础课代码所写的一个展示如何使用错误处理、fmtjson、字符串函数、随机数和时间的 Go 语言后端代码示例。

package main import ( "bufio" "encoding/json" "fmt" "math/rand" "strings" "time" ) // 定义一个结构体表示用户 
type User struct { Name string Age int } 

func main() { // 错误处理示例 
    file, err := os.Open("nonexistent.txt") 
    if err!= nil { fmt.Println("Error opening file:", err) } 
    else { defer file.Close() // 文件操作 }
    // fmt 包示例 
    fmt.Println("Hello, world!") 
    number := 42 
    fmt.Printf("The number is %d\n", number) 
    // json 包示例
    user := User{Name: "John", Age: 30} 
    jsonData, err := json.Marshal(user) 
    if err!= nil { fmt.Println("Error marshaling JSON:", err) } 
    else { fmt.Println(string(jsonData)) } 
    //随机数示例
    rand.Seed(time.Now().UnixNano())
    randomNumber := rand.Intn(100) 
    fmt.Println("Random number:", randomNumber) 
    // 时间示例 
    currentTime := time.Now() 
    fmt.Println("Current time:", currentTime) 
    time.Sleep(2 * time.Second) 
    elapsed := time.Since(currentTime) 
    fmt.Println("Elapsed time:", elapsed) }
    

在这个代码示例中,我们展示了如何使用错误处理、fmtjson、字符串函数、随机数和时间等功能。首先,尝试打开一个不存在的文件创造并处理错误。然后,使用fmt包进行输出格式化。接着,使用json包将结构体编码为 JSON 字符串。使用输入输出函数创建文件并写入内容。使用字符串函数检查一个字符串是否包含另一个字符串。使用随机数生成一个随机整数。最后,获取当前时间,等待一段时间后计算时间差。