【GO语言基础】前言

系列文章目录

【Go语言学习】ide安装与配置
【GO语言基础】前言
【GO语言基础】变量常量
【GO语言基础】数据类型

文章目录

  • 系列文章目录
  • 一、基础知识
    • 包和函数
      • 函数声明
      • 语法简洁性
    • 括号成对出现
    • GO常用DOS命令
    • 命名规则
    • 项目目录结构
    • 注释
  • 总结


一、基础知识

包和函数

//声明本代码所属包
package mainimport "fmt"//导入fmt包func main() {//声明一个名为main的函数,main为主函数为go的入口,不定义程序无法运行fmt.Println("hello,golang")//打印hello.golang
}

这段代码引入三个关键字package,import和func

package main:

  • package 关键字用于声明当前代码文件所属的包(package)。在 Go中,每个代码文件都必须属于一个包,且一个包内可以包含多个代码文件。main 是一个特殊的包名,表示这是一个可执行程序的入口点。在一个 Go可执行程序中,必须包含一个 main 包,它包含了 main 函数作为程序的入口。

import "fmt":

  • import 关键字用于导入其他包,以便在当前包中使用其功能。在这个代码中,通过 import “fmt” 导入了 fmt 包,fmt包提供了格式化输入和输出的函数,例如 Println 用于打印文本到标准输出。如果未使用的导入会导致编译错误。

func main():

  • func 关键字用于声明函数。在 Go 中,main 函数是特殊的,它是程序的入口点,当程序启动时,会首先执行 main 函数。 main函数没有参数,并且也没有返回值。 大括号 {} 用于包含函数的主体代码。

fmt.Println("hello, golang"):

  • 这是 main 函数的主体代码。它使用 fmt 包中的 Println 函数,打印文本 "hello, golang"到标准输出(通常是终端窗口)。

函数声明

使用func关键字声明函数。函数可以返回多个值,通过逗号分隔。函数可以作为参数和返回值。

package mainimport "fmt"
//定义函数Add
func Add(a, b int) int {return a + b
}
//调用函数Add
func main() {fmt.Println(Add(100, 200))
}

语法简洁性

import如果未使用go文件无法通过编译,go编译器是一行一行编译,不要把语句写到一行,否则会产生错误。
在这里插入图片描述
行数较长:使用"内容内容 ",换行
在这里插入图片描述

括号成对出现

在这里插入图片描述

GO常用DOS命令

go help:用于快速显示帮助。
go run: 用于快速测试和运行Go源代码文件,特别是在开发阶段。
go build: 用于将Go代码编译成可执行文件,方便在不同环境中运行。
go test: 用于运行测试用例,确保代码的正确性和稳定性。
go fmt: 用于格式化代码,使其符合Go语言的标准格式,以提高代码的可读性。
go get: 用于获取并安装外部依赖库,方便项目中使用第三方包。
go mod init: 用于初始化Go模块,开启模块管理功能。
go mod tidy: 用于整理和清理项目中的依赖关系,移除不再使用的依赖项。
go mod vendor: 将依赖项复制到项目的vendor目录中,以实现更好的版本控制。
go doc: 查看代码实体的文档,方便了解和使用标准库以及其他包的功能。
go install: 编译并安装Go程序,将可执行文件安装到$GOPATH/bin目录。

在这里插入图片描述

命名规则

文件命名规则:

  1. Go语言源文件的扩展名为.go。 所有Go源代码文件都必须以.go为扩展名。
  2. 文件名应该描述其内容。 文件名应该反映包内包含的类型或功能。例如,包含HTTP处理程序的文件可以命名为http_handlers.go
  3. 避免使用特殊字符和空格。 文件名应该只包含字母、数字和下划线,避免使用特殊字符和空格。
  4. 包含测试代码的文件名应该以_test.go结尾。 用于单元测试和性能测试的文件应该以_test.go结尾,例如mypackage_test.go

变量命名规则:

  1. 变量名由字母、数字和下划线组成。 开头必须是字母或下划线,后面可以是字母、数字或下划线。例如:myVariable, value_1, _privateVar
  2. Go语言的变量名通常采用驼峰式命名法。 驼峰式命名法将单词连接在一起,每个单词的首字母大写,例如:myVariableName
  3. 避免使用缩写。 尽量使用具有描述性的变量名,以提高代码的可读性。例如,使用totalCount而不是totCnt。
  4. 避免使用Go语言的关键字作为变量名。 例如,不要使用func、for、if等作为变量名。
  5. 变量名应该有意义。 变量名应该反映其用途或内容,以便其他开发者能够理解代码的含义。
  6. 公共(导出的)变量名应该以大写字母开头。 如果你希望变量在包外部可见和访问,应该以大写字母开头。例如,MyPublicVariable可以在其他包中访问。

以下是无效的标识符:

关键字描述
break用于跳出循环
default用于switch语句的默认分支
func用于定义函数和方法
go用于启动并发协程
goto用于无条件跳转到指定标签的语句
if用于条件语句
return用于返回函数结果
defer用于延迟执行函数调用
else用于条件语句的备选分支
for用于循环语句
switch用于多路分支语句
const用于定义常量
fallthrough用于switch语句中的默认处理
case用于switch语句的分支判断
continue用于跳过当前循环迭代
type用于定义类型
var用于声明变量

这些关键字不能作为命名使用,因为它们具有特殊的语法含义,用于表示Go语言的关键字。

使用驼峰命名法(CamelCase)来命名变量和函数,遵循一致的命名规范,使代码更易读。

package mainimport "fmt"func Add(a, b int) int {return a + b
}func main() {var NewTest1 int = 1     //大驼峰命名法,单词首字母大写var testVersion = "v1.0" //小驼峰命名法,除第一个单词外,其他单词首字母大写fmt.Println(NewTest1)fmt.Println(testVersion)fmt.Println(Add(100, 200))
}

项目目录结构

第一种简易模板
/myproject  /bin  /pkg  /src  /project1  /go.mod  /main.go  /project2  /go.mod  /main.gobin 目录存放编译后的可执行文件。
pkg 目录存放编译后的包文件。
src 目录存放项目源文件。
project1 项目一
project2 项目二第二种详细目录:
myapp/
├── cmd/
│   ├── myapp/
│   │   └── main.go
├── internal/
│   ├── package1/
│   │   ├── module1.go
│   │   └── module2.go
│   ├── package2/
│   │   ├── module1.go
│   │   └── module2.go
├── pkg/
│   ├── myutil/
│   │   ├── util1.go
│   │   └── util2.go
├── api/
│   ├── api.go
├── web/
│   ├── static/
│   ├── templates/
│   ├── main.go
├── config/
│   ├── config.go
├── tests/
│   ├── test1.go
│   └── test2.go
├── README.md
└── go.mod
cmd/: 用于存放应用程序的入口文件。每个应用程序通常都有一个子目录,其名称是应用程序的名称(如myapp)。每个子目录中通常有一个main.go文件,它包含应用程序的入口点。
internal/: 用于存放项目的内部包(internal packages),这些包只能被本项目中的其他包所引用,而不能被外部包引用。
pkg/: 用于存放可以被其他项目引用的包,被称为"公共包"(public packages)。
api/: 存放用于API定义的代码,如接口、数据结构等。
web/: 存放Web应用程序相关的文件,如静态资源(static/)、模板文件(templates/)以及主要的main.go文件。
config/: 存放应用程序的配置文件,或者用于加载配置的代码。
tests/: 存放测试文件,通常以_test.go结尾,用于编写单元测试和集成测试。
README.md: 项目的说明文档,可以描述项目的用途、使用方法等。
go.mod: Go模块文件,用于定义项目的模块路径和依赖关系。

注释

行注释:
// 这是一个单行注释多行注释:
/*
这是一个多行注释,
可以跨越多行。
*/文档注释:
可以使用/**和*/来定义文档注释,这种注释通常用于生成API文档。文档注释应该出现在函数、方法或类型之前
/**  * 这是一个函数,用于计算两个数的和。  * @param a 第一个加数  * @param b 第二个加数  * @return 两个数的和  */  
func Add(a, b int) int {  return a + b  
}

总结

本文简单介绍go语言的一些基本的知识,go语言简化了很多种的语言风格,如去掉结尾的分号,为使用包引用无法编译这些强制性措施使得代码风格统一代码的简洁性增加同时提高可读性等优点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/108788.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记一次线程堵塞(挂起)导致消息队列积压

1 背景 A服务作为生产者,每天发送上千万的mq消息,每一个消息包含500个用户ids数据。B服务作为消费者,接受MQ消息并通过http调用第三方请求进行业务处理,消费组启用了rabbitmq的多线程消费组,一个实例并发40个mq消费者…

企业如何高效平滑迁移数据?火山引擎DataLeap上线整库搬迁解决方案

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 近日,火山引擎大数据研发治理套件DataLeap上线整库搬迁解决方案,包括整库离线同步、整库实时同步两大能力,大大提升数据上云便捷…

C++项目实战——基于多设计模式下的同步异步日志系统-⑤-实用工具类设计

文章目录 专栏导读获取系统时间time介绍 getTime函数设计判断文件是否存在stat介绍exists函数设计 获取文件所在路径find_last_of介绍path函数设计 创建文件所在目录mkdir介绍find_first_of介绍函数createDirectory设计 实用工具类整理 专栏导读 🌸作者简介&#xf…

图论第三天|130. 被围绕的区域、417. 太平洋大西洋水流问题、827. 最大人工岛

130. 被围绕的区域 文档讲解 :代码随想录 - 130. 被围绕的区域 状态:开始学习。 思路: 步骤一: 深搜或者广搜将地图周边的 ‘O’ 全部改成 ’A’,如图所示: 步骤二: 再遍历地图,将 …

(3)MyBatis-Plus待开发

常用注解 TableName MyBatis-Plus在确定操作的表时,由BaseMapper的泛型决定即实体类型决定,且默认操作的表名和实体类型的类名一致,如果不一致则会因找不到表报异常 //向表中插入一条数据 Test public void testInsert(){User user new User(null, &…

基因型数据VCF转EXCEL亲测好用

import pandas as pd df pd.read_csv(shuju.vcf, sep\t, comment#, headerNone,encodingutf-8) df.to_excel(outputFile2.xlsx, indexFalse,encodingutf-8) 以上就是转成功的截图,需要注意的是一定要写入编码方式,UTF-8 ,第一次我没有写编码…

Zabbix“专家坐诊”第203期问答汇总

问题一 Q:用的模板,没用创建动作,但是触发器触发了我钉钉直接被通知了,怎么取消模板自带的动作? A:没有动作是不会触发事件告警的 ,确定是从这个平台推出的钉钉消息?或者看下zabbix…

论文解读 | 用于3D对象检测的PV-RCNN网络原创

原创 | 文 BFT机器人 01 背景 本文的背景涉及到3D物体检测,这是一个在自动驾驶和机器人等领域应用广泛的重要问题。在这些领域,LiDAR传感器被广泛用于捕捉3D场景信息,生成不规则且稀疏的点云数据。这些点云数据提供了理解和感知3D场景的关键…

数据可视化大屏模板 | 保姆级使用教程

近来很多朋友私信咨询怎么下载使用数据可视化大屏模板,在这里就给大家做一个相对简单的教程总结。有需要的朋友记得先收藏保存,以便不时之需。 数据可视化大屏制作软件:奥威BI系统 数据可视化报表模板板块:模板秀 主要操作&…

Linux 修改SSH的显示样式,修改终端shell显示的样式,美观更改

要修改SSH的显示样式,您可以使用自定义的PS1(提示字符串1)变量来更改命令行提示符的外观。在您的情况下,您想要的格式似乎包括日期和时间,以及当前目录。以下是一个示例PS1设置,可以实现您所描述的样式&…

【Seata】04 - Seata TCC 模式 Demo 调用流程分析

文章目录 前言参考目录版本说明前置知识1、TCC 模式预留资源2、TCC 模式可能会出现的问题2.1、幂等性问题2.2、空回滚问题2.3、悬挂问题 测试 Demo1、数据库表结构2、模块说明3、调用逻辑说明4、分析流程说明 Seata TCC 模式 Commit 调用流程1、调用流程图2、TCC 动作拦截器&am…

格式化以后数据还在吗 格式化后数据怎么恢复

格式化是一种保护数据存储设备、清空部分不使用文件的操作方法,它能够对数据存储设备中的文件进行初始化。 但是如果格式化时不小心清空了重要的数据,可能会造成数据丢失的问题。今天,我将以格式化以后数据还在吗,格式化后数据怎么…