首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏python3

    Go36-3-代码

    或者是其他代码中(这个后面讲) 代码示例 下面是程序的主体,但是其中调用了square()函数,这个函数并没有声明: // Go36/article03/example01/demo.go package 还可以先构建代码,在执行: PS H:\Go\src> go build Go36/article03/example01 PS H:\Go\src> . 访问权限 在这里把函数名称的首字母改为大写的原因是,名称的首字母为大写的程序实体才可以被当前外的代码引用,否则它就只能被当前内的其他代码引用。 这涉及了Go语言中对于程序实体访问权限的规则。 具体规则是,internal代码中声明的公开程序实体仅能被该代码的直接父及其子中的代码引用。当然,引用前需要先导入这个internal。 上面如果要在父级里调用孙级目录的internal,就是非法的: PS H:\Go\src\Go36\article03\example03> go run demo.go -x 7 demo.go:6

    47110发布于 2020-01-15
  • 来自专栏林德熙的博客

    WPF 修复 dotnet 6 与源代码冲突

    在 dotnet 6 时,官方为了适配好 Source Generators 功能,于是默认就将 WPF 的 XAML 构建过程中,引入第三方库的 cs 文件,这个功能默认设置为开启。 刚好源代码为了修复在使用 dotnet 6 SDK 之前,在 WPF 的构建 XAML 过程中,不包含第三方库的代码文件,从而使用黑科技将源代码加入到 WPF 构建 XAML 中。 在 VisualStudio 升级到 2022 版本,或者是升级 dotnet sdk 到 dotnet 6 版本,将会更新构建调度,让源代码里的代码文件被加入两次,从而构建失败 修复方法很简单,在不更改源代码的前提下 其原因是 dotnet 6 此更改是在 dotnet sdk 更改构建调度过程,和具体应用的框架无关,只影响构建本身 更多关于 WPF 构建过程,请看 WPF 程序的编译过程 - walterlv 本文会经常更新,请阅读原文: https://blog.lindexi.com/post/WPF-%E4%BF%AE%E5%A4%8D-dotnet-6-%E4%B8%8E%E6%BA%90%E4%

    92850编辑于 2021-12-31
  • 来自专栏【腾讯云开发者】

    Go语言“正统”在中国?这6点教你写好Go代码

    本文作者从设计、规范、陷阱到相关实现以例证说明并结合自己思考,详细解释了该如何写好 Go 代码,值得你的点赞分享转发收藏! 不要用注释删除代码。 TODO 格式:TODO(rtx_name): 什么时间/什么时机,如何解决。19.导出的函数/变量的职责必须与&文件职责高度一致。 检查 Go 的源码并报告可以的问题,我们可以在提交代码前,或者是在流水线配置 Go 代码的强制检验。 5.3 gofmt 大部分的格式问题可以通过 gofmt 解决, gofmt 自动格式化代码,保证所有的 Go 代码与官方推荐的格式保持一致,于是所有格式有关问题,都以 gofmt 的结果为准。 是否有现成的依赖、工具、复用的代码使用。 仓库配置相应的 CodeCC、单测覆盖率检测流水线。 发起 Codereview 准备好本次 CR 的背景知识,如 TAPD、设计文档等。

    78534编辑于 2023-12-26
  • 来自专栏solate 杂货铺

    go unsafe

    go unsafe unsafe是不安全的,可以绕过go内存安全机制,直接对内存进行读写。 指针转换 go 语言是强类型的,所以一般情况不允许不同类型指针进行转换 func main() { i:= 10 ip:=&i var fp *float64 = (*float64)(ip) It represents the type of an arbitrary Go expression. type ArbitraryType int type Pointer *ArbitraryType 中,是一种类型 // uintptr is an integer type that is large enough to hold the bit pattern of // any pointer 指针运算的核心在于它操作的是一个个内存地址,通过内存地址的增减,就可以指向一块块不同的内存并对其进行操作,而且不必知道这块内存被起了什么名字(变量名) 指针转换规则 Go 语言中存在三种类型的指针: 常用的

    75010编辑于 2022-05-09
  • 来自专栏大愚Talk

    微服务架构下 Go 代码组织实践

    内的组成 知道了模块的外部依赖,下一步我们就可以专注于如何在模块内组织代码(包括相关依赖的处理)。 在最开始,这个包包含以下文件: setup.go - 其中包含 Setup()函数, service.go - 它是逻辑文件, repository.go - 它是在读取/保存数据到数据的的文件。 这是使用这种方法的实际生产代码的一个例子。 所有类似的元素都应该由以下功能分割:repository_order.go 或 service_user.go。如果对象的类型超过 3 种,则将其移动到单独的子文件夹中。 ? 其次,尝试编写更少的测试用例的同时可以覆盖到更多的代码。对于每个主函数的决策/操作,一个成功的测试用例和一个失败的测试用例应该足够覆盖大约 80% 的代码

    75510发布于 2020-06-28
  • 来自专栏TomatoCool

    go runtime

    Gosched()函数用于让出 CPU 时间,让其他 goroutine拥有运行的机会。其原理是将当前goroutine放回到队列中,等待下一次调度。

    31430编辑于 2023-09-13
  • 来自专栏python-爬虫

    Go-

    Go- 的介绍以及使用 为什么使用 为了更加好的维护代码 的位置 必须再GOPATH路径的src中 能导入的内容 导入的内容名称必须是大写字母开头不然无法导入 src中的一个文件夹为一个 内的变量以及函数名 在同一文件夹下,就相当于同一中,任何变量名不能进行二次定义 在同一中,可以互相使用其他GO文件下的函数且不需要导入 go 程序中必须有一个main和一个main入口 如果不是package main他就是一个,他会把里面的函数都进行保存,不能有main函数 main也是一个特殊的,其中必须要有main函数,作为程序的入口,也就是执行这个文件的时候其中就是运行main函数 导入第三方模块 语法:go get 第三方模块路径 文件会被安装在GOPATH路径的src文件夹下

    34930发布于 2020-06-19
  • 来自专栏代码世界

    go-

    介绍 ( package )是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置,如 fmt 、 os 、 io 等。 定义 我们还可以根据自己的需要创建自己的。 一个可以简单理解为一个存放 .go 文件的文件夹。 该文件夹下面的所有go文件都要在代码的第一行添加如下代码,声明该文件归属的名是从$GOPATH/src/后开始计算的,使用/进行路径分隔。 Go语言中禁止循环导入。 init()函数执行顺序 Go语言会从 main 开始检查其导入的所有,每个中又可能导入了其他的Go编译器由此构建出一个树状的引用关系,再根据引用顺序决定编译顺序,依次编译这些代码。 在运行时,被最后导入的会最先初始化并调用其 init() 函数, 如下图示: ?

    62610发布于 2020-03-11
  • 来自专栏运维开发王义杰

    Go语言项目结构指南:从代码的角度看如何编写高质量的Go代码

    Go语言是一种简洁、高效、可靠的编程语言,它支持并发、垃圾回收、模块化等特性,适用于各种场景和领域。 Go语言的源码是以代码为基本组织单位的,一个代码可以包含多个源码文件,每个源码文件都必须在文件头部声明自己所属的名。代码可以被其他代码导入和使用,实现代码的复用和模块化。 在Go开发中,我们经常会遇到一些关于代码的问题,比如: 如何给代码命名? 如何给代码分配功能? 如何给代码划分层次? 这些问题看似简单,却涉及到Go语言的设计理念和最佳实践。 如果我们能够掌握一些关于代码的标准和建议,就可以更好地组织和管理我们的Go项目,提高代码的质量和可维护性。 本文将从以下几个方面介绍Go语言的代码的设计和使用: 代码的命名 代码的功能 代码的层次 代码的命名 给代码命名是一个很重要的环节,因为它不仅影响到我们如何导入和使用代码,也影响到我们对代码功能和职责的理解

    44050编辑于 2023-08-10
  • 来自专栏运维开发王义杰

    代码Go语言的灵魂:深入了解Go语言的代码组织方式和最佳实践

    Go语言的源码是以代码为基本组织单位的,一个代码可以包含多个源码文件,每个源码文件都必须在文件头部声明自己所属的名。代码可以被其他代码导入和使用,实现代码的复用和模块化。 除了首字母大小写的规则外,Go语言还提供了一个特殊的代码名:internal。 internalGo 1.4版本引入的一种代码保护机制,它可以限制一个代码只能被同一个父目录下的其他代码导入,而不能被其他位置的代码导入。 如果要使用第三方代码,就要使用go get命令将其下载到工作区中。 总结 本文介绍了Go语言的代码组织的标准和建议,主要包括以下几个方面: 代码的分类:main、内置、自定义、第三方 代码的可见性:首字母大小写、internal 代码的导入:基本语法、单行导入

    92820编辑于 2023-08-10
  • 来自专栏繁依Fanyi 的专栏

    Go 基础篇】Go语言详解:模块化开发与代码复用

    介绍 在Go语言中,(Package) 是一种用于组织代码的机制,用于将相关的函数、类型和变量等组织在一起,以便于模块化开发和代码复用。 的创建和导入 创建Go语言中,一个目录下的所有Go源文件必须属于同一个,即同一个目录下的文件必须声明相同的名。名通常与目录名相同。 在 math.go 文件中编写如下代码: package mathutil func Add(x, y int) int { return x + y } 导入 使用 import 关键字导入其他 总结 Go语言中用于组织代码的基本机制,通过将相关的函数、类型和变量组织在一起,实现模块化开发和代码复用。通过导入其他,我们可以在自己的代码中使用其他提供的功能。 在Go语言中,合理地组织和使用,能够极大地提高代码的可读性、可维护性和可扩展性,为您的程序开发带来便利。然而,在使用时也需要注意一些问题,以确保代码的健壮性和稳定性。

    1.5K20编辑于 2023-10-12
  • 来自专栏利志分享

    go的sync的使用详解1-日常实战总结6

    这里是讲sync整个的使用,但是会排出sync.pool的使用,sync.pool为啥单独拿出来讲,是因为sync.pool在高并发以及重复利用的变量使用中有很好的效果。 sync是业务中最常用的类库能排名前三,学会sync的使用是很有必要的。 下面我们看一下sync中sync,WaitGroup其他功能。 wg.Add(4)   //这里使用go func 表示协程调用   go test(wg)   go test(wg)   go test(wg)   go test(wg)   //这里是主线程wg 46.1110006 +0800 CST m=+2.013265501 4037200794235010051 over ---- 下面我们看一下Mutex(互斥锁)和RWMutex(读写锁)的使用 下面的代码的程序主要是通过多个协程并发 w := new(sync.WaitGroup)   for i := 0; i <= 3; i++ {     w.Add(1)     go func() {       defer w.Done(

    51930编辑于 2022-04-25
  • 来自专栏python-爬虫

    Go-闭

    一.关于闭的定义 定义在函数内部 对外部作用域有引用 二.GO语言里的闭 原来和其他语言一模一样,作用域的影响函数内只受函数内的影响 三.重点(不同于其他语言) GO语言中的函数套函数内层函数必须是匿名函数

    43720发布于 2020-06-19
  • 来自专栏ReganYue's Blog

    Go】闭函数

    改进前程序 package main import "fmt" func main() { var p2,progress int //获得武松和鲁达各自的“闭内层函数” //闭的作用是保存 = f1("武松",13) p2 = f2("鲁达",13) progress = f1("武松",1) p2 = f2("鲁达",13) //查看各自的状态 //各自的任务被保存在各自的闭

    46320发布于 2021-09-16
  • 来自专栏程序员奇点

    Go Log使用

    Go Log使用 log定义了Logger类型,该类型提供了一些格式化输出的方法。 本也提供了一个预定义的“标准”logger,可以通过调用函数Print系列(Print|Printf|Println)、Fatal系列(Fatal|Fatalf|Fatalln)、和Panic系列(Panic 例如,下面的代码会把日志输出到同目录下的xx.log文件中。 } 上面的代码输出如下: [小王子]2017/06/19 14:05:57.940542 ... /log_demo/main.go:13: 这是一条很普通的日志 这样我们就能够在代码中为我们的日志信息添加指定的前缀,方便之后对日志信息进行检索和处理

    77320发布于 2021-03-11
  • 来自专栏机器学习养成记

    Go系列:Go项目中的管理

    go1.11之后的版本可以使用go modules管理go项目中的依赖,也使项目脱离了GOPATH,可以放置在任意目录。 Go module的官方定义: 模块是相关Go的集合。 modules是源代码交换和版本控制的单元。go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。 开启go module: go 1.11 或更高 export GO111MODULE=on (设置环境变量) 使用go mod命令给项目添加go module: 在GOPATH之外的任意目录新建项目文件夹 go mod init test go.mod中对应的会下载到路径$GOPATH/pkg/mod中 打开一个已存在的go 项目,在有go.mod的目录下执行go build会自动下载go.mod中的 go env可以查看go的环境变量,例如 GOPATH 下载go时可能需要设置代理:

    1.2K10发布于 2020-11-19
  • 来自专栏程序员

    go语言慢速入门——

    go也使用来管理代码,在使用一个中的可导出标识符时(对于外而言,只有可导出标识符是可见的),需要先引入。 截至目前(Go 1.18),东方字符都被视为非导出字符。 非导出有时候也被称为未导出。 Go不支持循环引用(依赖)。 如果一个代码a依赖于代码b,同时代码b依赖于代码c,则代码c中的源文件不能引入代码a和代码b,代码b中的源文件也不能引入代码a。 和依赖类似,一个模块也可能依赖于一些其它模块。 此模块的直接依赖模块和这些依赖模块的版本在此模块中的go.mod文件中指定。 模块循环依赖是允许的。 对于声明在同一个中的两个不同源文件中的两个init函数,Go语言白皮书推荐(但不强求)按照它们所处于的源文件的名称的词典序列(对英文来说,即字母顺序)来调用。

    46940编辑于 2022-07-27
  • 来自专栏frytea

    go函数问题

    go函数问题# 在 Go 里,闭里的变量会被共享使用,这就意味着当你在运行闭函数的时候,函数中使用的变量其实是循环的最后一次改变后的值。 correctFunc := range correctFunctions { correctFunc() // 输出 one two three } } 运行上述程序输出如下: go run main.go three three three one two three 问题和解决方案也就很清晰了。

    34430编辑于 2023-10-21
  • 来自专栏飞鸟的专栏

    Go-函数-闭

    Go 语言中,闭是一种特殊的函数,它可以访问其定义时的上下文环境中的变量。闭通常用于需要在程序中定义临时函数的情况。闭的概念闭是一个函数值,它引用了其函数体之外的变量。 在 Go 语言中,闭可以访问其外部作用域中的变量,并且可以在调用之间保持状态。这些变量被称为“自由变量”,因为它们不是在函数内部声明的,而是在函数外部声明的。 闭通常用于需要在程序中定义临时函数的情况。闭的特点闭有以下几个特点:闭可以访问其定义时的上下文环境中的变量。闭可以在调用之间保持状态。闭可以被赋值给变量或作为参数传递给其他函数。 闭的使用方法在 Go 语言中,可以使用匿名函数创建闭。匿名函数可以访问其外部作用域中的变量,因此它们可以用作闭。 闭中引用的变量可能会被其他代码中引用的变量可能会被其他代码修改,从而影响闭的行为。因此,在使用闭时需要仔细考虑变量的作用域和生命周期,避免出现意外的行为。

    59710编辑于 2023-04-20
  • 来自专栏耕耘实录

    Go使用示例

    Go 语言中,匿名函数自不必多说,但闭有必要提一下。 闭:捕获外部变量,不关心这些捕获的变量或常量是否超出作用域,只要闭包在使用,这些变量就会一直存在。 使用闭实现除0以外的自然数的平方计算,要求每次被调用返回调用次数的平方。 代码如下: package main import "fmt" func main() { f := demo() fmt.Println(f()) fmt.Println(f()) fmt.Println

    39110编辑于 2022-05-09
领券