golang
已收录文章:14153篇
-
Go限制指针算术以提升安全性,不支持如C/C++的指针加减操作,防止内存越界;需底层操作时可用unsafe.Pointer配合uintptr进行偏移,但须确保地址有效并处理对齐;推荐用unsafe.Offsetof获取结构体字段偏移,避免硬编码;使用时需警惕悬挂指针、跨平台兼容性问题,并封装不安全操作以提供安全接口。380 收藏
-
Go语言要求显式类型转换,基本类型包括整型、浮点型、布尔型和字符串,变量可用var或:=声明;数值与字符串转换需用strconv包,字节切片与字符串可直接转换但字符串不可变;接口类型通过类型断言获取具体值,typeswitch处理多类型,确保类型安全。380 收藏
-
使用sync.Once可实现线程安全的懒加载单例,保证全局唯一实例;通过init函数可实现饿汉式单例,启动即初始化;推荐sync.Once方式,兼顾并发安全与延迟加载。380 收藏
-
Go的crypto包支持AES、RSA和SHA256等加密方法。使用AES-GCM实现对称加密,确保认证与完整性;通过rsa.EncryptOAEP进行非对称加密,推荐OAEP填充以提升安全;利用sha256.Sum256生成固定长度哈希值用于数据校验。实际应用中建议采用混合加密:RSA加密AES密钥,AES加密数据主体,并使用crypto/rand生成随机数,避免IV重用和弱随机源问题。380 收藏
-
1.数组和切片有什么区别 Go语言中数组是固定长度的,不能动态扩容,在编译期就会确定大小,声明方式如下: var buffer [255]int buffer := [255]int{0} 切片是对数组的抽象,因为数组的长度是不可变379 收藏
-
1. GOPATH 和 GOROOT(环境变量) 1. GOROOT go 编译器、标准库等安装的地方,所有我们写的代码其实都是文本文件而已,需要编译器等工具将其加工成可执行文件或者库文件才能使用,每种语言都有379 收藏