• GO面试一定要看看这些面试题


    Go核心特性

    1.goroutine

    协程是用户态轻量级线程,它是线程调度的基本单位

    使用者分配足够多的任务,系统能自动帮助使用者把任务分配到 CPU 上,让这些任务尽量并发运作。这种机制在 Go语言中被称为 goroutine(协程)。

    2.channel

    Don’t communicate by sharing memory, share memory by communicating.

    channel是go语言协程中数据通信的双向通道。但是在实际应用中,为了代码的简单和易懂,一般使用的channel是单向的。

    img

    缓冲机制

    有缓冲

    1. package main
    2. import "fmt"
    3. /*有缓冲*/
    4. func main() {
    5. ch := make(chan int, 3)//缓冲区大小为3,消息个数小于等于3都不会阻塞goroutine
    6. ch <- 1
    7. fmt.Println(<-ch)//输出1
    8. ch <- 2
    9. fmt.Println(<-ch)//输出2
    10. ch <- 3
    11. ch <- 4
    12. fmt.Println(len(ch))//输出2,表示是channel有两个消息
    13. fmt.Println(cap(ch))//输出3,表示缓存大小总量为3
    14. }

    无缓冲

    1. package main
    2. import "fmt"
    3. /*无缓冲*/
    4. func main() {
    5. ch := make(chan int, 3)
    6. ch <- 2
    7. ch <- 1
    8. ch <- 3
    9. elem := <-ch
    10. fmt.Println("The first element received from channel ch:%v\n", elem)
    11. }

    3.defer

    defer执行顺序和调用顺序相反,类似于栈先进后出。

    defer一般用于资源的释放和异常的捕捉, 作为Go语言的特性之一.

    defer 语句会将其后面跟随的语句进行延迟处理. 意思就是说 跟在defer后面的语言 将会在程序进行最后的return之后再执行.

    在 defer 归属的函数即将返回时,将延迟处理的语句按 defer 的逆序进行执行,也就是说,先被 defer 的语句最后被执行,最后被 defer 的语句,最先被执行。

    4.切片

    5.垃圾回收机制

    6.int与int32

    go语言中的int的大小是和操作系统位数相关的,如果是32位操作系统,int类型的大小就是4字节。如果是64位操作系统,int类型的大小就是8个字节。除此之外uint也与操作系统有关。

    int8占1个字节,int16占2个字节,int32占4个字节,int64占8个字节。

  • 相关阅读:
    第8章 综合案例—构建DVD租赁商店数据仓库
    Docker网络模型(五)使用 overlay 网络
    5.16 加载内核映像文件(2)
    深度学习之情感分析
    高德 几千条数据,点标记Marker转海量标注 LabelMarker
    Selenium+Python系列(一) - 开发环境搭建
    下载图片的小程序
    如何成为开源组件库NutUI的contributor:解决issue并提交PR
    c语言初学者用vs还是vscode?
    C++教程 - How to C++系列专栏第6篇
  • 原文地址:https://blog.csdn.net/m0_68263709/article/details/128024794