Go(java基础)

Go(java基础)

  • 当一个空指针,没有内存地址的时候,你去操作其就会报错
go 复制代码
var p *int
p = new(int)
*p = 20
  • 函数可以看作一种特殊的数据类型来使用

  • go的函数形参是值传递,不是引用传递,区别很大,但也可以传地址

  • 方法名和变量名的大小写表示public和private

  • 循环语句有且只有 for 循环

  • if 语句的格式要求严格

  • 切片是对一个数组的一个连续片段的引用,所以切片是一个引用类型

    • 切片的零值为nil
    • slice开始:结束 左闭右开
    • 切片的内部结构包含地址、len和cap,切片一般用于快速操作一块数据集合
  • 切片复制(copy)

    • 这里是深拷贝
    • 深拷贝是值拷贝,浅拷贝是地址拷贝
  • 切片扩容(append)类似redis的。。。。。

  • make仅用于创建slice、map和channel,分配内存并初始化

  • map

    • map是引用类型,零值是nil,必须初始化才能使用
    • 也是个动态集合,有相应的扩容机制
  • 接口

    • 也是只含有方法,且没有方法体
    • 继承关系是隐式的
    • 继承必须实现接口的所有方法
  • 空接口(any),类似java的Object

    • 任何类型都实现了空接口
    • 所以any类型的变量可以赋任何类型的值
  • 编程中,并发、并行都可以叫做并发

  • 用go关键字就可以开启协程,gorountine中的任务会、

  • 合理地分配给每个CPU,轻松实现高并发

  • go协程之间通过Channel(通道)实现通信

  • go的并发模型是CSP(Communicating Sequential Process),提倡通过通信共享内存 ,而不是通过共享内存来实现通信

    • 要知道通过共享内存(如全局变量)来通信,容易引发竞态问题,需要进行加锁操作,会造成性能问题
  • channel始终特殊类型(引用类型),像是一个队列,遵循先进先出的规则,保证了收发数据的顺序。每一个通道都是一个具体类型的导管,所以声明channel时需要为其指定元素类型

go 复制代码
var 变量名称 chan 类型
go 复制代码
make(chan 元素类型, [缓冲大小])//缓冲大小可选
  • Go应用本质上是一组Go包的集合

  • go.mod属于是go的依赖管理工具

  • err是一种接口

  • defer关键字, 用于延迟调用

可选

复制代码
- Go应用本质上是一组Go包的集合



- go.mod属于是go的依赖管理工具



- err是一种接口



- defer关键字, 用于延迟调用
相关推荐
OxYGC10 小时前
[工程] PHP2Shell 漏洞解析:两条 PHP 内核 RCE,为什么应用层的防护全部失效
android·开发语言·php
小徐不徐说10 小时前
数据库存储基础:理解表结构、主键、事务与 BLOB
开发语言·数据库·c++·qt·程序设计
草莓熊Lotso11 小时前
【C++ 基于微服务的即时通讯系统】网关基建:cpp-httplib 与 WebSocketpp 从入门到实战
linux·开发语言·数据库·c++·redis·微服务·云原生
李纲明11 小时前
WordPress 媒体库上传失败或一直转圈:先核 PHP 上传限制与目录权限,再查安全插件与对象存储
运维·开发语言·安全·php·wordpress·媒体库·devdiy
第九序言T19 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
龙亘川20 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
程序喵大人20 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
Raas10021 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
专注仿真1 天前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
jimy11 天前
C++ 中的 `T&&`:右值引用与转发引用
开发语言·c++