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

    Go36-3-代码

    或者是其他代码中(这个后面讲) 代码示例 下面是程序的主体,但是其中调用了square()函数,这个函数并没有声明: // Go36/article03/example01/demo.go package 上面的2个文件都要在同一个目录下,并且需要被声明为属于同一个。 执行代码 因为示例中都声明为main,并且里也有一个main函数。 还可以先构建代码,在执行: PS H:\Go\src> go build Go36/article03/example01 PS H:\Go\src> . 并行代码也做了一些修改: 名变成了lib2,这里故意和目录不是同一个名字 函数名的首字母变成了大写 名和目录名不同 现在要使用上面的。 具体规则是,internal代码中声明的公开程序实体仅能被该代码的直接父及其子中的代码引用。当然,引用前需要先导入这个internal

    47010发布于 2020-01-15
  • 来自专栏大猪的笔记

    go web: 2 封装日志log

    所以,我做的第一件事,就是向log动手。 和Python相比,log功能上逊色不少,但它给我们提供了基础的构架,让我们能自己稍微封装下。 需求 对日志我的要求很低,只要满足: 1. 提供Error, Info方法即可 2. 日志按天分割,即每隔一天,把昨天的日志保存为 logname.20170823这样的文件 代码 在原来的基础上,我们在src中创建文件夹logger,在里面创建文件logger.go 现在文件结构如下: logger.go | main.go 这个文件代码有点长,所以放附录了。 附录logger.go代码 // Package logger 是系统日志的封装,主要在之上封装了Error,Info两个函数。并提供了跨日期 // 自动分割日志文件的功能。

    1.9K10发布于 2019-11-21
  • 来自专栏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 代码组织实践

    内的组成 知道了模块的外部依赖,下一步我们就可以专注于如何在模块内组织代码(包括相关依赖的处理)。 这是使用这种方法的实际生产代码的一个例子。 其次,尝试编写更少的测试用例的同时可以覆盖到更多的代码。对于每个主函数的决策/操作,一个成功的测试用例和一个失败的测试用例应该足够覆盖大约 80% 的代码。 [2]校对:DingdingZhou[3] 本文由 GCTT[4] 原创编译,Go 中文网[5] 荣誉推出 参考资料 [1] Bartłomiej Klimczak: https://developer20 .com/about-me/index.html [2] shadowstorm97: https://github.com/shadowstorm97 [3] DingdingZhou: https:

    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文件都要在代码的第一行添加如下代码,声明该文件归属的。 举个例子, 我们定义一个名为pkg2代码如下: package pkg2 import "fmt" // 变量可见性 var a = 100 // 首字母小写,外部不可见,只能在当前内使用 单行导入 单行导入的格式如下: import "1" import "2" 多行导入 多行导入的格式如下: import ( "1" "2" ) 自定义名 在导入名的时候,我们还可以为导入的设置别名 Go编译器由此构建出一个树状的引用关系,再根据引用顺序决定编译顺序,依次编译这些代码。 在运行时,被最后导入的会最先初始化并调用其 init() 函数, 如下图示: ?

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

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

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

    43950编辑于 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语言入门课程(2)使用别人的

    使用三方提供的我们在pkg.go.dev这个网站上查找需要的,将一下代码写道hello.gopackage mainimport "fmt"import "rsc.io/quote"func main () { fmt.Println(quote.Go())}执行 go mod tidy将依赖导入D:\go\hello>go mod tidygo: finding module for package rsc.io/quotego: found rsc.io/quote in rsc.io/quote v1.5.2执行D:\go\hello>go run .Don't communicate by

    15520编辑于 2023-09-04
  • 来自专栏python-爬虫

    Go-闭

    一.关于闭的定义 定义在函数内部 对外部作用域有引用 二.GO语言里的闭 原来和其他语言一模一样,作用域的影响函数内只受函数内的影响 三.重点(不同于其他语言) GO语言中的函数套函数内层函数必须是匿名函数 另外关于函数套函数返回值怎么写 func test2(y int)(func(x int)func(),int) { a :=func(x int)func() { return func() return a,5 } //就是本质一样的什么样子返回,什么样子接受 四.补充取别名 //type 别名 被定义别名的 type my_func func(x int)func() func test2(

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

    Go】闭函数

    改进前程序 package main import "fmt" func main() { var p2,progress int //获得武松和鲁达各自的“闭内层函数” //闭的作用是保存 “各自的内层函数状态” f1 := GetDoTaskFunc() f2 := GetDoTaskFunc() //交错的执行任务 progress = f1("武松",13) p2 = f2 ("鲁达",12) progress = f1("武松",13) p2 = f2("鲁达",13) progress = f1("武松",1) p2 = f2("鲁达",13) //查看各自的状态 //各自的任务被保存在各自的闭中 fmt.Print("鲁达的进度说:",p2) fmt.Println("二哥的进度是",progress) //f1 := GetDoTaskFunc := GetTaskFunc("李逵") p1 := tf1(13) p2 := tf2(14) p1 = tf1(10) p2 = tf2(18) fmt.Println("武松的进度:"

    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
  • 来自专栏猫头虎博客专区

    2015年2月4日 Go生态洞察:Go语言中的命名艺术

    2015年2月4日 Go生态洞察:Go语言中的命名艺术 摘要 大家好,我是猫头虎,今天我们来探讨Go语言中一个非常重要但经常被忽视的话题:命名。 一个好的名不仅能够让代码更加易懂,还能够帮助开发者明确的功能和范围。让我们深入了解如何为Go选择合适的名字吧! 引言 在Go语言中,代码是组织成的。 不同目录下可以有同名的。 不良名的修复 不良的名会使代码难以维护和理解。 ️ 避免无意义的名 不要使用util、common、misc等模糊的名。 分解通用 将通用拆分成更具体的。 避免不必要的名冲突 尽量避免使用与频繁一起使用的其他名相同的名。 总结 在Go语言中,命名是代码组织的核心。 花时间选择好的名,并合理组织你的代码,这有助于客户端更好地理解和使用你的,也方便的维护者进行后续的扩展和维护。

    25710编辑于 2024-04-09
  • 来自专栏机器学习养成记

    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 语言中,可以使用匿名函数创建闭。匿名函数可以访问其外部作用域中的变量,因此它们可以用作闭。 count++ return count }}c := counter()fmt.Println(c()) // 输出:1fmt.Println(c()) // 输出:2fmt.Println 闭中引用的变量可能会被其他代码中引用的变量可能会被其他代码修改,从而影响闭的行为。因此,在使用闭时需要仔细考虑变量的作用域和生命周期,避免出现意外的行为。

    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
领券