小工具知识网

当前位置: 首页 > 行业知识 > GO基础记录

行业知识

GO基础记录

2026-11-11 08:50:52 来源:互联网转载
  • defer:生命周期结束后执行(栈顺序),在打开一些资源后,可以使用defer执行关闭.释放的操作,类似RAII
  • panic:类似于throw,抛出异常
  • make()���于构建切片,map,channel

    defer,panic,recover配合使用代码

    ()
    defer func(){    if ret := recover(); ret != nil{        fmt.print(ret)    }}panic("error")
    • interface:接口类型,只需定义接口然后实现接口,无需绑定,即可使用多态
    • interface{}:相当于any类型,可装万物
      type duck interface{    gaga()    walk()}type pskDuck struct{    age int}type (p *pskDuck) gaga(){    }type (p *pskDuck) walk(){    }func main(){    var value duck = &pskDuck{}    d.gaga()}
      • go在同一级目录下包名要一致,import的路径是相对于*.mod文件的路径

      • 小驼峰相当于private,大驼峰相当于public(针对于不同的包之间)

        ()
      • 在import文件前面可以声明包的别名

        • import std “fmt”,从此fmt包要写成std
        • 在前面加.就类似于using namespace,不在需要通过包名使用(少使用,可能重名,污染)
        • 如果引入包,但是不使用,是会报错的,需要在前面添加_(import一个包会默认调用func init()函数,这是使用场景)
        • go get指令可以安装库,自动安装依赖

        • go mod init xxx初始化

        • go mod tidy添加需要用到但go.mod中查不到的模块,删除未使用的模块(推荐)

        • sync.WaitGroup:主要用于goroutine的执行等待

          • add用于添加等待的次数
          • done用于减少一次计数器
          • Wait阻塞等待
          • go关键字启动一个协程

          • atomic是一个原子包,里面提供了很多原子方法

          • channel分为有缓冲和无缓冲,如果需要使用无缓冲(make(chan string,0)),那么需要启动一个goroutine去读取

          • 可以通过close函数关闭一个channel,已经关闭的channel不能在放值,但是可以取值,

          • 可以通过for range不断地取值

            • }struct B{ A}

上一篇:不用的笔记本怎么做服务器?

下一篇:游戏文件丢失?重新下载指南帮你轻松找回!