青训营X豆包MarsCode 技术训练营第一课(后端) | 豆包MarsCode AI刷题

169 阅读3分钟

  这是我第一次参加字节青训营,刷帖偶然刷到字节青训营这个活动,搜了一下发现前一天活动正好发出,就报了名。第一节课真是给了我一个小小的震撼,真是纯干货,很干,特别干。
  首先关于go语言,高并发,高性能,工具链完善,标准库丰富。光说是体验不到,但是在后面的编程过程中就可以慢慢体会了。

基础语法及常用特性解析

  通过第一节课的学习,发现仅论入门而言,go的基础语法确实比较简单,也有可能是有其他语言基础导致的。

基础语法

  基础语法这些语言都大差不差,就是各有各的特色,我个人认为go比较具有特色的有四点:
  1.常、变量声明:
    常量:const name type = value
    变量:var name type,也可以不指定类型,让它自己判断var tame = value
  2.切片Slice:
    可以当作是一个动态的数组,可以直接声明var identifier []type也可以通过makevar slice []type = make([]type, len)slice := make([]type, len)
  3.仅有for循环:
    没有while等其他循环方式,只有for,循环体需要使用花括号括起来for 表达式 {}表达式无需括号包裹,for{}表示死循环。
  4.switch不用break:
    如题   

常用特性

  目前接触到的不多,defer算一个,课上并没有了解很多,我就在AI练中学问了下豆包MarsCode,特性解释如下:在Go语言中,defer 是一个非常有用的关键字,用于延迟执行函数调用。defer 语句通常用于确保某些操作(如资源释放、日志记录等)在函数返回之前执行,无论函数是如何退出的。

defer 的特性

  1. 延迟执行

    • defer 语句会将紧随其后的函数调用推迟到包含 defer 语句的函数返回之前执行。
    • 即使函数因为 panic 而异常退出,defer 语句也会执行。
  2. 后进先出(LIFO)

    • 如果有多个 defer 语句,它们会按照后进先出(LIFO)的顺序执行。也就是说,最后一个 defer 语句会最先执行,而第一个 defer 语句会最后执行。
  3. 参数预计算

    • defer 语句中的函数参数会在 defer 语句执行时立即计算,而不是在 defer 函数实际执行时计算。

示例代码

package main

import "fmt"

func main() {
    // 第一个 defer 语句
    defer fmt.Println("Deferred call 1")

    // 第二个 defer 语句
    defer fmt.Println("Deferred call 2")

    // 第三个 defer 语句
    defer fmt.Println("Deferred call 3")

    fmt.Println("Main function")
}

输出结果

Deferred call 3
Deferred call 2
Deferred call 1

课后作业

词典


  向词典中增加另一种翻译引擎,并实现并行请求两个翻译引擎。这里我使用了课中的彩云和字节自家的火山翻译。主要对源代码进行了以下修改:
1.使用channel接收数据,两个goroutine使用同一个channel,仅输出第一个到达的数据

ch := make(chan string)
go query_caiyun(word, ch)
go query_volcengine(word, ch)
fmt.Println(word, "Explain\n")
fmt.Println(<-ch)
close(ch)


2.query_caiyun(word,ch)中在最后采用以下代码传输数据

explain := ""
for _, v := range dictResponse.Dictionary.Explanations {
    explain = explain + v
}
ch <- explain


3.query_volcengine(word,ch)中在最后采用以下代码传输数据

ch <- dictResponse.Translation


  对我这个菜鸟来说第一节课输出的知识量不小,通过学习也使我了解到了很多不曾了解到的知识,其中AI练中学这个工具很方便,搭配好的环境拯救了在vscode中输不上数字的我(最后选择了Goland)尤其是提供了准备好的代码可以供我轻松修改,省去了很多麻烦,边学边问拓展了很多知识。