go语言源文件包含什么?Go语法规范

简介: go语言源文件包含什么?Go语法规范

简单的概述一下go语言源文件中都包含什么?


(一)包声明(五颗星)


      ①第一个非注释行必须进行声明这个文件属于哪个包,package main 表示一个可独立执行的程序
      每一个go应用程序都必须包含一个名为main的包(并且仅含有一个main函数)
      ②文件名与包名没有直接的关系,不一定将他们两个命名相同
      ③同一个文件夹下的所有文件只能属于同一个包,否则编译报错
      ④一个包下可以包含多个文件,并且文件之间的函数,变量可以直接使用。


例如:
package main//这里的包名可以换成自己写的


(二)导包


      import "fmt"告诉go编译器这个程序需要使用fmt包
      而fmt包实现了I/O函数
      导包的时候需要搭建好环境,并且注意路径。导入多少包使用多少包(杜绝资源浪费)


例如:
import (
  "fmt"
  "io/ioutil"
  "net/http"
  //导入的包必须使用,如果不使用可以使用以下方法导入,否则就会报错
  _ "os"
)


(三)标志符命名注意点(五颗星)


      如果一个标志符(常量、变量、类型、函数名、结构字段等)以大写字母开头
      那么这个变量可以在外部包的代码中使用(只有当所在的包被导入时才生效)
      类似于面向对象中的public权限,如果标识符以小写字母开头
      那么他对外部不可见,对本包可见并可用,类似于protected
      标志符的组成由数字、字母、下划线组成,并且开头的不能是数字、关键字不可以作为标识符


(四)语句和作用域:


  作用域定义:作用域为已声明标识符所表示的常量、变量、函数或包在源码中的作用范围。
    go语言变量可以在三个地方声明:
      <1>函数内定义的变量称为局部变量
      <2>函数外定义的变量称为全局变量
        全局变量首字母大写在包导出后在其他包内也可以使用
        全局变量首字母小写仅可在本包内使用
      <3>函数定义中的变量称为形式参数
        形参作为该函数的局部变量来使用
    go语言中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑(就近原则)
  语句规范:
    一般而言在go语言中一行只放一句代码
    不像python使用tab键格式化严格规范,
    不像c,java那样一行可以写多句代码,
    也不像c/c++那样用;代表语句结束,go也可以一行写多个语句用;隔开但是 一般不提倡这么做


(五)go语言中变量的声明(三颗星)


      (1)变量声明用var进行声明
      (2)或者直接用a:=10 这种方式会给a进行自动赋值,并且根据所赋的值设置a的类型。
      注意: 如果一个变量没有初始化,就将数值型变量置为0,引用型变量置为nil。
          如果局部变量只有声明没有使用就会进行编译出错


例如:
目的:声明一个变量a,并将10赋值给a
使用var
方法一:
var a = 10
方法二:
var a int
a = 10
方法三:
var a int =10
直接赋值
a := 10


(六)注释

      与c、c++一样,在go语言中单行注释用//,多行注释用/**/


(七)函数

      func main()是程序开始的执行函数,main函数是每一个可执行程序需要包含的
      一般来说都是在启动程序后第一个执行的函数
      如果有init()函数会先执行init()函数
      函数可以有多个返回值,也可以传任意个不同类型的参数。(后面会细说)


工欲善其事,必先利其器 。先对go语言文件有一个大致的理解,再进行学习起来就很方便啦

相关文章
|
4天前
|
监控 Linux PHP
【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
|
3天前
|
存储 监控 算法
探秘员工泄密行为防线:基于Go语言的布隆过滤器算法解析
在信息爆炸时代,员工泄密行为对企业构成重大威胁。本文聚焦布隆过滤器(Bloom Filter)这一高效数据结构,结合Go语言实现算法,帮助企业识别和预防泄密风险。通过构建正常操作“指纹库”,实时监测员工操作,快速筛查可疑行为。示例代码展示了如何利用布隆过滤器检测异常操作,并提出优化建议,如调整参数、结合日志分析系统等,全方位筑牢企业信息安全防线,守护核心竞争力。
|
10天前
|
Go C语言
Go语言入门:分支结构
本文介绍了Go语言中的条件语句,包括`if...else`、`if...else if`和`switch`结构,并通过多个练习详细解释了它们的用法。`if...else`用于简单的条件判断;`if...else if`处理多条件分支;`switch`则适用于基于不同值的选择逻辑。特别地,文章还介绍了`fallthrough`关键字,用于优化重复代码。通过实例如判断年龄、奇偶数、公交乘车及成绩等级等,帮助读者更好地理解和应用这些结构。
34 14
|
25天前
|
存储 监控 算法
内网监控系统之 Go 语言布隆过滤器算法深度剖析
在数字化时代,内网监控系统对企业和组织的信息安全至关重要。布隆过滤器(Bloom Filter)作为一种高效的数据结构,能够快速判断元素是否存在于集合中,适用于内网监控中的恶意IP和违规域名筛选。本文介绍其原理、优势及Go语言实现,提升系统性能与响应速度,保障信息安全。
28 5
|
1月前
|
算法 安全 Go
Go语言中的加密和解密是如何实现的?
Go语言通过标准库中的`crypto`包提供丰富的加密和解密功能,包括对称加密(如AES)、非对称加密(如RSA、ECDSA)及散列函数(如SHA256)。`encoding/base64`包则用于Base64编码与解码。开发者可根据需求选择合适的算法和密钥,使用这些包进行加密操作。示例代码展示了如何使用`crypto/aes`包实现对称加密。加密和解密操作涉及敏感数据处理,需格外注意安全性。
47 14
|
1月前
|
Go 数据库
Go语言中的包(package)是如何组织的?
在Go语言中,包是代码组织和管理的基本单元,用于集合相关函数、类型和变量,便于复用和维护。包通过目录结构、文件命名、初始化函数(`init`)及导出规则来管理命名空间和依赖关系。合理的包组织能提高代码的可读性、可维护性和可复用性,减少耦合度。例如,`stringutils`包提供字符串处理函数,主程序导入使用这些函数,使代码结构清晰易懂。
95 11
|
1月前
|
存储 安全 Go
Go语言中的map数据结构是如何实现的?
Go 语言中的 `map` 是基于哈希表实现的键值对数据结构,支持快速查找、插入和删除操作。其原理涉及哈希函数、桶(Bucket)、动态扩容和哈希冲突处理等关键机制,平均时间复杂度为 O(1)。为了确保线程安全,Go 提供了 `sync.Map` 类型,通过分段锁实现并发访问的安全性。示例代码展示了如何使用自定义结构体和切片模拟 `map` 功能,以及如何使用 `sync.Map` 进行线程安全的操作。
|
10天前
|
监控 关系型数据库 MySQL
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
19 0
|
1月前
|
监控 安全 算法
深度剖析核心科技:Go 语言赋能局域网管理监控软件进阶之旅
在局域网管理监控中,跳表作为一种高效的数据结构,能显著提升流量索引和查询效率。基于Go语言的跳表实现,通过随机化索引层生成、插入和搜索功能,在高并发场景下展现卓越性能。跳表将查询时间复杂度优化至O(log n),助力实时监控异常流量,保障网络安全与稳定。示例代码展示了其在实际应用中的精妙之处。
44 9
|
2月前
|
算法 安全 Go
Go 语言中实现 RSA 加解密、签名验证算法
随着互联网的发展,安全需求日益增长。非对称加密算法RSA成为密码学中的重要代表。本文介绍如何使用Go语言和[forgoer/openssl](https://github.com/forgoer/openssl)库简化RSA加解密操作,包括秘钥生成、加解密及签名验证。该库还支持AES、DES等常用算法,安装简便,代码示例清晰易懂。
64 12