GO 基础

# GO 基础

  1. go build 和 go run 有什么区别?
  2. 值类型和引用类型有什么区别?
  3. 变量定义的三种方式,分别有什么区别?
  4. 什么是函数,如何定义和使用?什么是方法,和函数有什么区别?什么是闭包?实现匿名函数做参数,直接赋值给变量以及直接调用
  5. 什么是指针,如何使用和读取?创建一个指针数据赋值并打印
  6. 什么是结构体?go中如何实现面向对象?结构体定义时属性的赋值方式有哪些?实现结构体自定义打印,实现修改结构体属性方法,实现一个私有对象并提供工厂访问方法
  7. 什么是切片?如何创建一个具有初始化长度的切片?如何直接初始化一个切片?如何向切片增加元素?如何修改切片的值?什么是切片的初始容量和最大容量,如何已到达最大容量是如何扩容的?如何使用数组的一部分元素创建切片,使用数组创建的切片初始和最大容量是怎样的?
  8. 什么是范围,有哪些作用?遍历map时两个值含义是什么,如何要舍弃key或者value应该如何做?遍历数组或切片时的含义是什么?切片默认是按哪个容量进行打印的?遍历unicode时两个值的含义是什么?
  9. 什么是Map,如何创建一个map,指定初始化大小的创建,直接复制的创建,如何进行增删改查?如何查看map中是否存在某个元素?map中的元素有序吗?
  10. go 如何进行类型转换?字符串如何转int?int如何转字符串?int直接强转string为什么不行,使用什么函数进行转换
  11. 什么是接口?接口如何实现?go 如何使用多态?使用new关键字创建对象和直接类json方式创建对象有什么不同?接口实现时用指针实现需要注意哪些问题?
  12. 如何进行类型验证,验证的是什么东西?
  13. go 如何进行异常处理?如何自定义错误?自定义一个除法错误并使用
  14. 什么是 goroutine ?什么是通道,通道缓冲区如何使用,通道如何使用和关闭,通道的方向是如何制定的?通道能只在主协程中使用吗?通道如何遍历?通道为什么要关闭,关闭后还能读取数据吗?
  15. go如何实现继承特性,go如何实现多继承,父类的属性有访问控制权限吗,如何访问多继承时存在的多个同名属性?继承基本类型有什么作用
  16. go如何实现封装特性,有哪些限制点?
  17. go如何实现多态特性?如何实现多个接口?接口可以继承其他的接口吗?什么是空接口?接口未初始化时输出什么?
  18. go如何读文件?如何写文c件?如何复制文件?
  19. 主协程结束后,其他的协程处于什么状态?Waitgroup的作用是什么,有哪些方法,如何使用?Mutex是什么,如何使用,读写锁如何使用?
  20. 管道有哪些属性,管道能否超出容量使用,管道是什么类型的,如何证明?使用通道+协程完成一个生产者消费者模型,消费速度大于生产速度,并且主协程等待子协程完成?管道是否会阻塞,如果配合通道使用select?如何处理某个协程的崩溃问题?
  21. 使用go创建服务器和客户端,并完成5个客户端同时和服务端通信
  22. 反射常用的方法是什么?如何通过反射获取变量的类型和类别,类型和类别有什么区别?如何通过反射获取结构体的属性和方法,并完成属性的修改和方法的调用,如何获取属性和方法的个数?如何将Value类型还原为普通类型?
  23. context包的作用是什么,有哪些常用方法?
  24. go mod tidy 和 go mod vendor 的作用和原理

注:以上题目答案可参考

  1. 菜鸟教程 (opens new window)学习笔记 (opens new window)
  2. 深入理解 Go 模块管理 (opens new window)
最后一次更新时间: 7/1/2024, 1:58:13 PM