go
ThinkStu
Less is More.
展开
-
go.mod与module
在 Go 语言的项目中,go.mod文件是 Go Modules 依赖管理系统的核心文件之一。在go.mod文件中,module声明是用来定义当前项目的模块路径的。模块路径是项目中包的导入路径的前缀。下面是关于go.mod文件中modulemodule。原创 2024-01-03 16:54:14 · 762 阅读 · 3 评论 -
Go代码解密:理解byte和int8的边界行为
在这篇博文中,我们将深入探讨Golang中的二进制补码和类型转换。通过一个具体的代码示例,我们将揭示byte和int8类型在特定条件下的行为,并解释为什么这种行为会发生。我们将详细讨论补码的概念,以及如何应用补码来表示负数。此外,我们还将解释为什么在对byte和int8类型的值取负数时,结果可能会与我们的直觉不符。通过阅读这篇文章,你将更深入地理解Golang中的数值类型和二进制补码,以及它们在实际编程中的应用。原创 2023-10-25 10:48:38 · 246 阅读 · 0 评论 -
子切片的长度和容量
在Go语言中,切片有两个属性,长度和容量。原创 2023-10-25 09:48:36 · 211 阅读 · 0 评论 -
Go构建者模式
构建者模式是一种创建型设计模式,用于构建复杂的对象。它可以确保在一个 struct 有多个构造函数参数时依旧能保持代码的可读性与清晰性。原创 2023-10-17 17:42:11 · 374 阅读 · 0 评论 -
Go选项模式
选项模式是一种在 Go 语言中很常用的设计模式,特别是当你有一个结构体或函数,并且它有多个可选的配置选项时。该模式允许用户提供一系列的的函数来设置结构体的属性或修改函数的行为。函数类型定义了如何修改目标对象。这是提供自定义逻辑的关键。原创 2023-10-15 15:53:12 · 185 阅读 · 0 评论 -
strconv使用指南
String Conversion,字符串转换strconv 是 Go 语言标准库中的一个「包」,提供了将字符串与基本数据类型(如整数、浮点数、布尔值)之间相互转换的功能。原创 2023-09-13 17:40:34 · 328 阅读 · 0 评论 -
Go中带标签的break/continue以及goto的差别
直接跳到标签所标记的最外层循环的下一个迭代,忽略当前迭代剩余的代码。直接跳出标签所标记的最外层循环,继续执行该循环之后的代码。goto可以无条件地跳转到程序中指定的标签处。在这种情况下,可以使用任意标签,不仅限于循环。原创 2023-08-17 20:53:11 · 3077 阅读 · 0 评论 -
理解 Go 中的切片:append 操作的深入分析(篇2)
理解 Go 语言中 slice 的性质对于编程非常有益。下面,我将通过代码示例来解释切片在不同函数之间传递并执行 append 操作时的具体表现。的第一个元素,将其设为 2。本篇为第 2 篇,当切片的容量 cap 不够时。的第一个元素设为 1(这个更改也反映在。当新的底层数组准备好之后,我们再次更改。的容量已满(3/3),所以。操作会触发底层数组的扩容。原创 2023-08-14 11:57:02 · 4570 阅读 · 0 评论 -
理解 Go 中的切片:append 操作的深入分析(篇1)
理解 Go 语言中 slice 的性质对于编程非常有益。下面,我将通过两个代码示例来解释切片在不同函数之间传递并执行 append 操作时的具体表现。原创 2023-08-14 11:30:44 · 4441 阅读 · 2 评论 -
Go中for循环的遮挡效应
在一个for循环中,如果我们在循环体内部声明了一个与初始化语句中的变量同名的变量,那么这个新变量会“遮挡”外部的同名变量。但这种遮挡只在声明它的那一行代码开始,直到循环体结束的范围内有效。当下一次循环开始时,外部的同名变量会重新显现,并继续使用for声明语句中的值。这一行代码就像是在房间的一角放了一个遮挡灯光的屏风。想象成一个房间里的灯泡,而。原创 2023-08-10 11:09:11 · 3982 阅读 · 0 评论 -
Go基准测试Benchmark
Go语言自带了一个强大的测试框架,其中包括基准测试(Benchmark)功能,基准测试用于测量和评估一段代码的性能。基准测试结果会显示每次操作的平均时间,可以通过这个结果来评估你的代码的性能,或者对比不同版本或不同实现的性能差异。基准测试函数的名字必须以"Benchmark"开头,后面跟着的是想要命名的测试名字,函数的唯一参数是一个指向。我们可以通过在Go的测试文件中编写特殊格式的函数来创建基准测试。标志后面跟着的是一个正则表达式,匹配你想要运行的基准测试函数的名字,是一个非常大的数,Go测试框架。原创 2023-07-27 14:47:45 · 3862 阅读 · 0 评论 -
Go分析堆/栈内存
在Go语言中,变量是否在栈上还是在堆上分配是由编译器在编译阶段进行"逃逸分析"决定的。如果一个变量只在函数作用域内部使用,它往往会被分配在栈上;如果一个变量被外部引用,或者被返回到函数外部,那么它就可能"逃逸"到堆上。编译器将输出关于变量如何被分配的信息。上述输出表明,在main.go的第14行,变量 x 逃逸到了堆。要查看一个Go程序的逃逸分析结果,你可以在构建程序时使用。原创 2023-07-26 15:12:59 · 4407 阅读 · 0 评论 -
goland设置内置命令行为当前项目环境
修改 GoLand 中的 SSH 终端配置即可。goland设置内置的命令行为当前项目环境。原创 2023-07-17 16:25:40 · 4632 阅读 · 0 评论 -
Go语言中的init函数简介
函数的主要目的是在包被导入时进行初始化操作,例如。原创 2023-07-17 08:48:59 · 4049 阅读 · 0 评论 -
如何理解闭包函数的特性(golang版)
即 makeAdder 函数接收了一个整数作为参数,并返回一个匿名函数。而返回的匿名函数就是闭包函数,因为它引用了 makeAdder 函数作用域中的变量 base,这就是闭包函数的结构定义。而在闭包函数特性这块,我们可以看到,在闭包函数里,我们首先令变量 base 的值为 10。这说明每一次调用闭包的时候,它里面的值还是初始值。特性:闭包可以在多次调用之间保持原始状态。在这个例子中,我们可以将函数。原创 2023-07-16 20:48:25 · 5150 阅读 · 0 评论 -
goland自定义代码模版
在 GoLand 中我们既可以修改已有代码模版,也可以新建属于我们自己的代码模版,按需配置。原创 2023-07-16 17:56:01 · 461 阅读 · 0 评论 -
go语言中的string类型简介
在 Go 和 Java 中,字符串在内存中都被当作常量处理。函数:这种方法适用于你已经准备好所有需要拼接的字符串的情况,且允许我们在拼接的字符串中插入分隔符,这在某些情况下是必需的。但是这种方法会消耗大量内存。在 Go 语言中,字符串由 Unicode 字符组成,每个字符都可以用一个或多个字节来表示。来定义字符串,使用反引号定义的字符串不会对其内容进行任何的转义(例如文本中包含。类型:这种方法适用于你没有提前准备好所有需要拼接的字符串的情况。在 Go 中,String 是一种不可变的类型,不能被修改。原创 2023-07-16 14:58:44 · 4464 阅读 · 0 评论 -
go语言中的Scan函数简介
String scan,从字符串中读取数据。Sscanf 的用法与 Scanf 类似,只是会从字符串中读取数据而不是标准输入。:按照指定格式对输入进行解析。在 Go 语言中,从标准输入(默认是键盘)读取数据可以使用 fmt 包中的 Scan 和 Scanln 函数。:类似于 Scan,但是只能读取一行数据(将换行符视为终止),如果输入的数据格式不正确,将返回错误。:请勿混淆各种输入方式的用法。获取输入,但是却采用了。:注意这里是 &num。原创 2023-07-16 14:55:46 · 4703 阅读 · 0 评论 -
Go语言中的JSON库简介
Go 标准库中的包提供了 JSON 数据的编码和解码功能。在日常开发中,我们主要使用的函数有解析字符串类型的和,以及处理流式 JSON 数据的和。原创 2023-07-15 23:58:54 · 1178 阅读 · 0 评论 -
print与fmt.Print的区别
重定向到一个已经关闭或不可写的文件,或者发生了类似的问题,fmt.Println可能就会返回错误。在大多数情况下,fmt.Println不会返回错误。如果没有发生错误,我们将打印出写入的字节数。如果发生错误,我们将错误信息写入到。在这个示例中,我们打印了。原创 2023-07-15 23:18:15 · 361 阅读 · 0 评论 -
go mod vendor简明介绍
vendor 机制并不是一个完美的解决方案。它需要将所有的依赖都复制到 vendor 目录中,这可能会导致项目的大小变得非常大。另外,这可能会对代码审查和版本控制系统(如 Git)的性能产生负面影响。因此,从Go 1.11版本开始,使用 Go Modules 进行依赖管理已经成为了推荐的做法,而vendor机制逐渐被淡化。不过,vendor目录并没有被完全废弃。原创 2023-07-15 22:56:08 · 1741 阅读 · 0 评论 -
Go Module简明介绍
Go Modules 模式中,引入了项目级别的依赖管理,使得每个项目都可以独立管理自己的依赖关系。当我们使用 Go Modules 模式后,项目中会自动创建 go.mod 文件,其中记录了项目所依赖的模块及其版本信息,当我们引入一个新的依赖时,go.mod 也会被自动更新。的 GOPATH 模式中,所有 Go 代码都必须位于一个全局的 GOPATH 路径之下,这使得在不同项目中使用不同版本的依赖包非常困难。原创 2023-07-15 22:52:01 · 4537 阅读 · 0 评论 -
Golang版本控制器:gvm
要在Mac电脑上切换Golang版本,可以使用类似版本管理工具的工具来实现,例如。安装 Golang 版本(这里我安装了 2 个不同的版本)刷新系统配置使 gvm 生效。验证 Golang 版本。原创 2023-07-11 18:05:42 · 937 阅读 · 0 评论 -
fmt.Scan(“%d“, &num)
这是一种“错误”的书写方式观察下面两种方式,有什么不同?第一种是错误的,其使用 Scan 获取输入,但是却采用了 Scanf 的写法;第二种方式是正确的。在这两个示例中,有一个关键区别:fmt.Scan 函数不使用格式字符串,而 fmt.Scanf 函数使用格式字符串。但是我们在第一个示例中使用了 fmt.Scan,并提供了一个格式字符串,这是不正确的。原创 2023-04-05 19:53:36 · 9421 阅读 · 0 评论