
Go
大大大大大宝
这个作者很懒,什么都没留下…
展开
-
PB文件定义为int64,HTTP返回为string的问题
从协议缓冲区生成 JSON 编码的输出时,如果 protobuf 字段具有默认值并且该字段不支持字段存在,则默认情况下它将从输出中省略。实现可以提供选项以在输出中包含具有默认值的字段。设置了值且支持字段存在的字段始终在 JSON 编码输出中包含字段值,即使它是默认值。当将 JSON 编码的数据解析到协议缓冲区中时,如果缺少一个值或者它的值为null,它将被解释为相应的 默认值。Proto3 支持 JSON 中的规范编码,从而更容易在系统之间共享数据。编码在下表中按类型逐个描述。原创 2023-05-10 17:04:21 · 1232 阅读 · 0 评论 -
Go 切片内存优化(摘录)
切片持有对底层数组的引用。只要切片在内存中,数组就不能被垃圾回收。在内存管理方面,这是需要注意的。让我们假设我们有一个非常大的数组,我们只想处理它的一小部分。然后,我们由这个数组创建一个切片,并开始处理切片。这里需要重点注意的是,在切片引用时数组仍然存在内存中。一种解决方法是使用 copy 函数 func copy(dst,src[]T)int 来生成一个切片的副本。这样我们可以使用新的切片,原始数组可以被垃圾回收。package mainimport ( "fmt")func cou原创 2021-10-21 17:20:31 · 165 阅读 · 0 评论 -
Go从切片中删除元素
a := []int{1, 2, 3, ...}a = append(a[:0], a[1:]...) // 删除开头1个元素a = append(a[:0], a[N:]...) // 删除开头N个元素a = append(a[:i], a[i+1:]...) // 删除中间1个元素a = append(a[:i], a[i+N:]...) // 删除中间N个元素原创 2021-10-14 11:23:50 · 286 阅读 · 0 评论 -
Go 读写,复制文件
package mainimport ( "bufio" "fmt" "io" "os")func main() { // 打开一个文件 file, err := os.Open("./test.txt") if err != nil { fmt.Println("open file failed err=", err) } // 关闭文件 defer file.Close() // 创建一个缓存 reader := bufio.NewReader(file) f原创 2021-06-06 17:04:45 · 149 阅读 · 0 评论 -
Go Sprintf 和 Printf 区别
Go学习中,基础一点一点积累先来看一眼官方文档func Printf// Printf根据format参数生成格式化的字符串并写入标准输出。返回写入的字节数和遇到的任何错误。func Printf(format string, a ...interface{}) (n int, err error)func Sprintf//Sprintf根据format参数生成格式化的字符串并返回该字符串。func Sprintf(format string, a ...interface{}) stri原创 2021-06-02 17:49:46 · 3766 阅读 · 0 评论 -
Go 学习笔记,编译报错:mixture of field:value and value initializers
初学Go执行时,抛出一个错误,排查问题,觉得很有意思,记录一下,不得不说Go设计者的强一致性package modeltype Goods struct { Name string Price float64}type Book struct { Goods Author string}package mainimport ( "code/model" "fmt")func main() { var book = model.Book{ model.Goo原创 2021-05-31 11:03:19 · 1155 阅读 · 0 评论 -
Go 生成一个随机数
package mainimport ( "fmt" "math/rand" "time")func main() { // 设置一个种子 rand.Seed(time.Now().UnixNano()) // Intn返回一个取值范围在[0,n)的伪随机int值 num := rand.Intn(100) + 1 // 随机1-100 fmt.Println(num)}原创 2021-05-09 17:55:45 · 363 阅读 · 0 评论 -
Go1.16 mod导入包
Go语言到1.16已经开启了使用mod管理包GO111MODULE配置标识是否使用mod管理包文件GO111MODULE = no // 开启,off 关闭 auto检测是否有mod文件,有即使用mod项目目录执行go mod init生成go.mod文件我的目录结构,mod文件中gocode就是当前目录名(生成时可以自己设置)hero.go文件的包在main.go 中这样导入包即可注意:包名一定要写正确 ,否则会报这么一个错误,package gocode/mode is not i原创 2021-05-02 01:20:21 · 723 阅读 · 0 评论 -
Golang语言中的单引号、双引号、反引号
双引号:""Golang语音双引号表示一个字符串(Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 ,所以说Go语言不存在乱码问题),双引号内字符可以转义,比如:\n,\r反引号:``反引号引起来的字符串就不支持转义,一些正则表达式,HTML,MySql语句都可以用反引号来表示单引号:’'一般只能用来包裹一个字节的ASCII码字符,比如:var a int = '中'...原创 2021-05-01 14:42:24 · 980 阅读 · 0 评论