Go语言--一篇通

变量声明

  • 短变量声明 :=
  • 常量声明 const
  • 变量声明 var
  • 变量提升(和js一样)
  • 类型推导
go 复制代码
var 变量名称  第三方返回值
  • 指针类型
go 复制代码
var 变量名称 *值类型

数据类型

整数型,浮点型,复数,布尔,字符串

函数声明

go 复制代码
//  函数名称-形参类型-返回值类型
fun uname(uname string) string {

}
  • 多个参数
go 复制代码
//  函数名称-形参类型-返回值类型
fun uname(uname ...string) string {

}

几个比较重要的函数名称 init defer main启动函数,以及闭包

结构体

go 复制代码
type 结构名称A struct {
    uname string
}
  • go语言没有继承概念,只有组合概念
go 复制代码
type 结构名称B struct {
    结构名称A   结构类型    映射字段(常见的有JSON映射和SQL映射)
}
  • go语言没有set/get概念
go 复制代码
func (结构体接收器 结构体名称) 函数名称(形参名称 形参类型){
    结构体名称.uname=形参名称
}
  • 使用
go 复制代码
func main(){
    变量名称 := 结构体B{uname : "张三"}
    变量名称.函数名称()
}

接口(类似于多态概念,编译类型这种概念)

go 复制代码
type 接口名称 interfance {
    结构体() 返回值类型
}

type 结构体 struct {
    uname string
}

func (接收器 结构体名称) 函数名称() 返回值类型 {
    return 结构体.uname
}

func 普通函数名称(参数名称 接口名称){
    // 输出
}

func main(){
    变量名称 := 结构体{uname : "小明"}
    普通函数(变量名称)
}
  • 这里有个概念叫空interfance{},代表任何值

值传递与引用传递

go语言默认是值传递

值传递和引用传递区别

  • 值传递是拷贝地址
  • 引用传递是同一地址 用 * 关键字

go 复制代码
var mu = Sync.Mutex
// 加锁
mu.Lock()
// 解锁
mu.unLock()
  • Sync.RWMutex 读写分离锁

WaitGroup与channel

  • WaitGroup
go 复制代码
var wg Sync.WaitGroup

wg.Done()

wg.Add()

Wg.Wait()
  • channel通道
go 复制代码
channel := make(chan,2)

<- 这个是数据流操作符

  • goroutine
go 复制代码
go 函数名(){

}()

线程安全集合

  • sync.map

读写文件

  • os.readFile 读取文件
  • os.writeFile 写文件

异常处理

for循坏

  • 死循环之一
go 复制代码
for {
    Select {
        case 接受数据 <- 发送数据
        
        default
    }
}
  • 死循环之一
go 复制代码
for true {}
  • range 求和

make字段

  • 切片用途
  • map集合使用
  • channel通道定义,这里有个关键字段chan
相关推荐
小蒜学长13 分钟前
springboot党建云课堂学习与管理系统(代码+数据库+LW)
java·数据库·spring boot·后端·学习
烂蜻蜓2 小时前
Flask入门教程(十二):表单处理——从基础到Flask-WTF完整实践
后端·python·flask
2601_962055979 小时前
跟据spring boot版本,查看对应的tomcat,并查看可支持的tomcat的版本范围
spring boot·后端·tomcat
Lost of 程序猿10 小时前
ASP.NET Core API 幂等性设计深度实战:从一次重复申领事故说起
后端·asp.net
QQ_216962909611 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
郑州光合科技余经理13 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
IT_陈寒13 小时前
Vue的嵌套组件竟然吃掉了我的事件?
前端·人工智能·后端
大辉狼_音频架构14 小时前
进阶:从源码编译 SOF 固件与 topology
后端
大辉狼_音频架构14 小时前
上板:让 SOF 在 FRDM-i.MX8MP 上跑起来
后端
大辉狼_音频架构14 小时前
FRDM-IMX8MP UUU 烧录 eMMC 指南
后端