Go 标识符命名特点和规范 | 学习笔记

简介: 快速学习 Go 标识符命名特点和规范

开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map: Go 标识符命名特点和规范】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9537


Go 标识符命名特点和规范

标识符命名注意事项

(1)包名

①第一节课中讲过,每一个 go 文件都应归属于一个包,命名包名时要使 package 的名字和目录尽量保持一致,即包名尽量与其所在文件夹名称一致,但这不是绝对的。

案例1    

在计算机中找到源代码,go 中包含 src,src 下方有各种文件夹,任意打开一个文件夹中的源代码,其包名与文件夹名称一致。

如打开 fmt 文件夹,任意打开一个源代码 print.go,其中的包名为 fmt,与其所在的文件夹的名称一致;

打开 src 下的文件夹 errors,任意打开一个源代码 errors.go,其中的包名为 errors,与其所在的文件夹的名称一致。

案例2      

曾经的课堂演示中,名为 demo04 的文件夹下有一个文件 main.go ,其内包名为main,

原程序代码如下:

package main

import (

"fmt"

)

func main() {

var i int=10

i = 30

i = 50

fmt.println("i=",i)

}

由于演示中该文件夹中仅一个文件 main.go,因此包名与文件夹名不同影响较小,但实际开发过程中,某一文件夹下文件不止一个,不同的文件夹与各自的包对应,可以更方便管理代码,

因此以上案例在实际开发过程中应做适当修改。

可在原文件夹 demo04 下再新建一个文件夹 main,并将文件 main.go 移动到引得文件夹 main 中,即可使得代码的包名与其所在文件夹名一致。

②尽量采取有意义的包名,简短,有意义,不要和标准库的包名冲突

如标准库中有一个叫做 fmt 的包,则不要再命名一个同名的包。

(2)变量名、函数名、常量名

采用驼峰法,即变量名称中第一个单词首字母小写,而第二个单词首字母大写,该变量名形式:

xxxYyyyZzzz...。

案例3      

定义一个 string 类型的变量表示学生的姓名

var stuName string="tom"

案例4        

定义一个 float32 型变量表示商品的价格

var goodPrice float32="1234.5"

(3)如果变量名、函数名、常量名首字母大写,则可以被其他的包访问,如果小写,则只能在本包中使用。

这体现了 Go 语言编程的特性,其他的编程语言则没有这种特性,如 Java 语言中通过使用 public、protected、private 等关键字来控制使用范围。

Go 语言中的这种特性可简单理解为首字母大写是公有的,等同于 Java 语言中的 public,首字母小写是私有的,等同于 Java 语言中的 private,但要注意 Go 语言中没有这些关键字。

案例 5      

要使得 demo04 中 main 文件夹中的文件 main.go 使用 model 文件夹 utis.go 中的变量“宋江”。

utis.go 文件中的代码如下:

package model

var heroName string = "宋江"

main.go 文件中的代码见案例 2

修改方案如下:

① main.go 文件代码修改:

package main

import (

"fmt"

//为了使用 utis.go 文件中的变量或函数,需要先引入该包

"go_code/chapter03/demo04/model"

/按照工作目录顺序(路径)引入,

从 go_code 开始引( go pass 已引用至前面的 d:/goproject,

因此可忽略,而 src 属于默认路径,会自动添加,也可忽略)

}

func main() {

var i int=10

i = 30

i = 50

fmt.println("i=",i)

//使用 utis.go 的 heroName 包名.标识符

fmt.println("model.heroName") 

//编译器报错,提示 model.heroName 是一个不可导入的变量,因为 utis.go 中该变量 heroName 首字母“h”小写,

因此,不可被 main 包引用,可以将 utis.go 文件中 model 包中的变量 heroName 改为首字母大写形式 HeroName ,并在该文件中对应进行修改。

fmt.println("model.HeroName")

}

② utis.go 文件代码修改:

package model

var HeroName string = "宋江"

最终 main.go 文件中代码的输出结果中包含“宋江”。

相关文章
|
6月前
|
监控 安全 Java
Go语言学习笔记(一)
Go语言学习笔记(一)
124 1
|
存储 Go
Go语言接口声明规范和最佳实践
Go语言接口声明规范和最佳实践
125 0
|
2月前
|
Go
go语言注释,标识符 | 17
go语言注释,标识符 | 17
Go语言的条件控制语句及循环语句的学习笔记
本文是Go语言的条件控制语句和循环语句的学习笔记,涵盖了if语句、if-else语句、if嵌套语句、switch语句、select语句以及for循环和相关循环控制语句的使用方法。
Go语言的条件控制语句及循环语句的学习笔记
|
2月前
|
存储 Go
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
|
2月前
|
人工智能 算法 搜索推荐
Go学习笔记-代码调
近年来,人工智能技术飞速发展,Cody作为由Sourcegraph开发的一款AI驱动编码助手,应运而生。它不仅提供代码预测与补全,还能深度理解代码上下文,为开发者提供准确建议,提升编码效率和质量。Cody能识别潜在错误并提出修复建议,缩短调试时间,同时进行智能代码审查,帮助优化代码结构和风格。未来,随着AI技术进步,Cody将不断学习优化,成为开发者不可或缺的伙伴,推动编程领域的创新与发展。
33 0
|
6月前
|
Go
Golang深入浅出之-Go语言代码质量与规范:遵循Gofmt与Linting
【5月更文挑战第1天】本文讨论了如何使用`gofmt`和Lint工具提升Go代码质量。`gofmt`负责自动格式化代码,保持风格统一,而Lint工具如`golint`、`govet`、`staticcheck`则进行静态分析,检查潜在错误和未使用的变量。通过集成`gofmt`检查到CI/CD流程,避免格式冲突,并使用Lint工具发现并修复问题,如未处理的错误、不规范命名。遵循这些最佳实践,可提高代码可读性、团队协作效率和可维护性。
118 3
|
6月前
|
编译器 Go 开发者
Go语言入门|包、关键字和标识符
Go语言入门|包、关键字和标识符
71 0
|
6月前
|
存储 分布式计算 算法
GO学习笔记之表达式
GO学习笔记之表达式
51 1
|
6月前
|
存储 编译器 Go
GO语言学习笔记
GO语言学习笔记
44 1