go语言编程系列(三)

简介: go语言编程系列(三)

每个go程序都是由包构成的,程序从main包开始运行

本程序通过导入路径"fmt"和"math/rand"来使用这两个包


import (  "fmt"  "math/rand")func main() {  fmt.Println("Hello, World!")  var input string  fmt.Scanln(&input)  fmt.Println("你的输入是:%s", input)  fmt.Println("My favorite number is", rand.Intn(10))}

按照约定,包名与导入路径的最后一个元素一致。

例如:"math/rand"包中的源码均以packange rand语句开始

注意:此程序的运行环境是固定的,因此rand.Intn总是返回相同的数字,要得不到的数字,需为生成器提供的不同的种子数。

包的价值:进行模块的解耦

Go语言中的包和其他语言的库或模块的概念类似,目的都是为了支持模块化,封装,单独编译和代码重用。

一个包的源代码保存在一个或多个以.go为文件后缀名的源文件中。

1、如果包中含有较多个.go源文件,它们将按照发给编译器的顺序进行初始化,Go语言的构建工具首先会将.go文件根据文件名排序,然后依次调用编译器编译。

2、对于在包级别声明的变量,如果有初始化表达式则用表达式初始化,还有一些没有初始化表达式的,例如某些表格数据初始化并不是一个简单的赋值过程。

包的init初始化函数

1、在这种情况下,我们可以使用一个特殊的init初始化函数来简化初始化工作

2、每个文件都可以包含多个init初始化函数


func init() { }

3、这样的init初始化函数不能被调用或引用,其他行为和普通函数类似

4、在每个文件中的init初始化函数,在程序开始执行时按照它们的声明的顺序自动被调用。

5、每个包在解决依赖的前提下,以导入声明的顺序初始化,每个包只会被初始化一次。

6、因此,如果一个P包导入了m包,那么在p包初始化的时候可以认为m包必然已经初始化过了。

7、初始化工作是自下而上进行的,main包最后被初始化。

8、以这种方式,可以确保在main函数执行之前,所以依赖的包都已经完成初始化工作了。

包的导入:

import导入包的用法:


import "github.com/tidwall/gjson" //通过包名gjson调用导出接口import json "github.com/tidwall/gjson" //通过别名json调用gjsonimport . "github.com/tidwall/gjson" //.符号表示,对包gjson的导出接口的调用直接省略包名import _ "github.com/tidwall/gjson" //_ 仅仅会初始化gjson,如初始化全局变量,调用init函数
目录
打赏
0
1
1
0
55
分享
相关文章
员工上网行为监控中的Go语言算法:布隆过滤器的应用
在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
95 8
员工上网行为监控中的Go语言算法:布隆过滤器的应用
|
2月前
|
go语言中数组和切片
go语言中数组和切片
48 7
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
4天前
|
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
52 20
探秘员工泄密行为防线:基于Go语言的布隆过滤器算法解析
在信息爆炸时代,员工泄密行为对企业构成重大威胁。本文聚焦布隆过滤器(Bloom Filter)这一高效数据结构,结合Go语言实现算法,帮助企业识别和预防泄密风险。通过构建正常操作“指纹库”,实时监测员工操作,快速筛查可疑行为。示例代码展示了如何利用布隆过滤器检测异常操作,并提出优化建议,如调整参数、结合日志分析系统等,全方位筑牢企业信息安全防线,守护核心竞争力。
|
10天前
|
Go语言入门:分支结构
本文介绍了Go语言中的条件语句,包括`if...else`、`if...else if`和`switch`结构,并通过多个练习详细解释了它们的用法。`if...else`用于简单的条件判断;`if...else if`处理多条件分支;`switch`则适用于基于不同值的选择逻辑。特别地,文章还介绍了`fallthrough`关键字,用于优化重复代码。通过实例如判断年龄、奇偶数、公交乘车及成绩等级等,帮助读者更好地理解和应用这些结构。
34 14
|
2月前
|
go语言中结构体(Struct)
go语言中结构体(Struct)
124 71
|
2月前
|
go语言中的数组(Array)
go语言中的数组(Array)
121 67
|
25天前
|
内网监控系统之 Go 语言布隆过滤器算法深度剖析
在数字化时代,内网监控系统对企业和组织的信息安全至关重要。布隆过滤器(Bloom Filter)作为一种高效的数据结构,能够快速判断元素是否存在于集合中,适用于内网监控中的恶意IP和违规域名筛选。本文介绍其原理、优势及Go语言实现,提升系统性能与响应速度,保障信息安全。
28 5
Go语言中的加密和解密是如何实现的?
Go语言通过标准库中的`crypto`包提供丰富的加密和解密功能,包括对称加密(如AES)、非对称加密(如RSA、ECDSA)及散列函数(如SHA256)。`encoding/base64`包则用于Base64编码与解码。开发者可根据需求选择合适的算法和密钥,使用这些包进行加密操作。示例代码展示了如何使用`crypto/aes`包实现对称加密。加密和解密操作涉及敏感数据处理,需格外注意安全性。
47 14
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等