go
文章平均质量分 88
Benaso
这个作者很懒,什么都没留下…
展开
-
Golang三色标记法
详细讲述了什么是三色标记法,三色标记法如何在golang并发增量场景下被运用。原创 2024-06-22 18:15:36 · 802 阅读 · 1 评论 -
HashMap在Go与Java的底层实现与区别
在Java中hash表的底层数据结构与扩容等已经是面试集合类问题中几乎必问的点了。网上有对源码的解析已经非常详细了我们这里还是说说其底层实现。原创 2024-05-27 23:30:48 · 1217 阅读 · 0 评论 -
Golang如何使用命令行-- flag库
在打印前应该加上flag.Prase()显示解析我们的参数值。原创 2024-03-10 16:32:30 · 751 阅读 · 0 评论 -
GO语言学习笔记(与Java的比较学习)(十一)
一个应用程序是运行在机器上的一个进程;进程是一个运行在自己内存地址空间里的独立执行体。一个进程由一个或多个操作系统线程组成,这些线程其实是共享同一个内存地址空间的一起工作的执行体。并行是一种通过使用多处理器以提高速度的能力。所以并发程序可以是并行的,也可以不是。公认的,使用多线程的应用难以做到准确,最主要的问题是内存中的数据共享,它们会被多线程以无法预知的方式进行操作,导致一些无法重现或者随机的结果(称作 竞态)。不要使用全局变量或者共享内存,它们会给你的代码在并发运算的时候带来危险。原创 2024-03-04 00:03:05 · 1112 阅读 · 0 评论 -
GO语言学习笔记(与Java的比较学习)(十)
这是所有自定义包实现者应该遵守的最佳实践:1)在包内部,总是应该从 panic 中 recover:不允许显式的超出包范围的 panic ()2)向包的调用者返回错误值(而不是 panic)。原创 2024-03-03 23:59:23 · 677 阅读 · 0 评论 -
GO语言学习笔记(与Java的比较学习)(九)
最简单的办法是使用fmt包提供的 Scan 和 Sscan 开头的函数。Scanln 扫描来自标准输入的文本,将空格分隔的值依次存放到后续的参数内,直到碰到换行。Scanf 与其类似,除了 Scanf 的第一个参数用作格式字符串,用来决定如何读取。Sscan 和以 Sscan 开头的函数则是从字符串读取,除此之外,与 Scanf 相同。原创 2024-03-03 23:57:01 · 1088 阅读 · 0 评论 -
GO语言学习笔记(与Java的比较学习)(七)
当你在值类型上定义方法时,方法接收的是该值的副本。这意味着在方法内部对接收者的修改不会影响原始值。这种方式适用于不需要在方法内部修改接收者数据的情况,或者对数据的修改是独立于原始数据的。原创 2024-02-29 11:01:55 · 937 阅读 · 0 评论 -
GO语言学习笔记(与Java的比较学习)(六)
当写自己包的时候,要使用短小的不含有(下划线) 的小写单词来为文件命名。包的初始化:程序的执行开始于导入包,初始化 main 包然后调用 main 函数。一个没有导入的包将通过分配初始值给所有的包级变量和调用源码中定义的包级 init 函数来初始化。一个包可能有多个 init 函数,它们甚至可以存在于同一个源码文件中。它们的执行是无序的。这是测定包的值是否只依赖于相同包下的其他值或者函数的最好的例子。init 函数是不能被调用的。原创 2024-02-28 19:30:13 · 871 阅读 · 0 评论 -
GO语言学习笔记(与Java的比较学习)(五)
在声明的时候不需要知道 map 的长度,map 是可以动态增长的。未初始化的 map 的值是 nil(即零值为nil),nil映射既没有键,也不能添加键。key 可以是任意可以用 == 或者!= 操作符比较的类型,比如 string、int、float。所以切片和结构体不能作为 key ,但是指针和接口类型可以。(含有数组切片的结构体不能作为 key,只包含内建类型的 struct 是可以作为 key 的)如果要用结构体作为 key 可以提供Key()和Hash()原创 2024-02-28 19:29:19 · 785 阅读 · 1 评论 -
GO语言学习笔记(与Java的比较学习)(四)
一个结构体(struct)就是一组字段(field)。结构体中的字段用 . 访问。原创 2024-02-28 15:56:29 · 878 阅读 · 0 评论 -
GO语言学习笔记(与Java的比较学习)(三)
Go 默认使用按值传递来传递参数,也就是传递参数的副本。函数接收参数副本之后,在使用变量的过程中可能对副本的值进行更改,但不会影响到原来的变量。如果你希望函数可以直接修改参数的值,而不是对参数的副本进行操作,你需要将参数的地址(变量名前面添加 & 符号,比如 &variable)传递给函数,这就是按引用传递,如果传递给函数的是一个指针,指针的值(一个地址)会被复制,但指针的值所指向的地址上的值不会被复制;我们可以通过这个指针的值来修改这个值所指向的地址上的值。(译者注:指针也是变量类型,有自己的地址和值,通原创 2024-02-28 15:51:33 · 1087 阅读 · 0 评论 -
GO语言学习笔记(与Java的比较学习)(二)
关键字 if 和 else 之后的左大括号 { 必须和关键字在同一行,如果你使用了 else-if 结构,则前段代码块的右大括号 } 必须和 else-if 关键字在同一行。这两条规则都是被编译器强制规定的。if 可以包含一个初始化语句(如:给一个变量赋值)。使用简短方式 := 声明的变量的作用域只存在于 if 结构中(在 if 结构的大括号之间,如果使用 if-else 结构则在 else 代码块中变量也会存在)。如果变量在 if 结构之前就已经存在,那么在 if 结构中,该变量原来的值会被隐藏。原创 2024-02-28 15:48:01 · 899 阅读 · 0 评论 -
GO语言学习笔记(与Java的比较学习)(一)
一个应用程序可以包含不同的包,而且即使你只使用 main 包也不必把所有的代码都写在一个巨大的文件里:你可以用一些较小的文件,并且在每个文件非注释的第一行都使用 package main 来指明这些文件都属于 main 包。同时,带有 ++ 和 -- 的只能作为语句,而非表达式,因此 n = i++ 这种写法是无效的,其它像 f(i++) 或者 a[i]=b[i++] 这些可以用于 C、C++ 和 Java 中的写法在 Go 中也是不允许的。否则,如果这个指针为空,你使用它的话,会Crash。原创 2024-02-28 15:42:40 · 1762 阅读 · 0 评论