c语言sscanf函数的用法是什么
302
2022-09-03
Go----Go 语言基础之标识符、关键字、命名规范、变量、常量
文章目录
一、标识符
1.1 标识符的组成
二、关键字
2.1 25个基本关键字2.2 36个预定义标识符
三、命名规范
3.1 公有私有的命名规范3.2 包名称命名规范3.3 文件命名规范3.4 结构体命名规范3.5 接口命名规范3.6 变量名命名规范3.7 常量命名规范3.8 异常处理的规范3.9 单元测试规范
四、变量
五、常量
一、标识符
标识符,通俗的讲,就是给变量、常量、函数、方法、结构体、数组、切片、接口起名字
1.1 标识符的组成
在 Go 语言中,标识符的组成和其他编程语言类似,如下:
标识符有字母、数字和下划线组成标识符只能以字母或下划线开头,不能以数字开头标识符区分大小写
二、关键字
关键字字,就是在Go语言中内置定义了一些标识符,这些标识符已经存在固定的含义了,在自定义变量名时不能再使用关键字了,Go语言中的关键字包含25个基本关键字和36个预定义标识符
2.1 25个基本关键字
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
2.2 36个预定义标识符
append | bool | byte | cap | close | complex | complex64 | complex128 | uint16 |
copy | false | float32 | float64 | imag | int | int8 | int16 | uint32 |
int32 | int64 | iota | len | make | new | nil | panic | uint64 |
print | println | real | recover | string | true | uint | uint8 | uintptr |
三、命名规范
命名规则涉及变量、常量、全局函数、结构、接口、方法等的命名
3.1 公有私有的命名规范
当命名(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:GetUserName,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);命名如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 private )
3.2 包名称命名规范
保持package的名字和目录保持一致,尽量采取有意义的包名,简短,有意义,尽量和标准库不要冲突。包名应该为小写单词,不要使用下划线或者混合大小写
如:
package userpackage service
3.3 文件命名规范
尽量采取有意义的文件名,简短,有意义,应该为小写单词,使用下划线分隔各个单词。
如:
user_api.go
3.4 结构体命名规范
结构体命名规范采用驼峰法,首字母根据是否提供外部使用决定是否使用大小写
type CustomerOrder struct { Name string Address string}
3.5 接口命名规范
接口命名规范也是采用驼峰法,此外单个函数的结构名以 “er” 作为后缀,例如 Reader , Writer
type Reader interface { Read(p []byte) (n int, err error)}
3.6 变量名命名规范
变量名称一般遵循驼峰法,首字母根据访问控制原则大写或者小写,但遇到特有名词时,需要遵循以下规则:
如果变量为私有,且特有名词为首个单词,则使用小写,如 appService若变量类型为 bool 类型,则名称应以 Has, Is, Can 或 Allow 开头
如:
var isExist boolvar hasConflict boolvar canManage boolvar allowGitHook bool
3.7 常量命名规范
常量均需使用全部大写字母组成,并使用下划线分词
const APP_URL = "异常处理的规范
错误处理的原则就是不能丢弃任何有返回err的调用,不要使用 _ 丢弃,必须全部处理。接收到错误,要么返回err,或者使用log记录下来尽早return:一旦有错误发生,马上返回,尽量不要使用panic,除非你知道你在做什么,错误描述如果是英文必须为小写,不需要标点结尾,采用独立的错误流进行处理
// 错误写法if err != nil { // 错误处理} else { // 正常代码}// 正确写法if err != nil { // 错误处理 return // 或者继续}
3.9 单元测试规范
单元测试文件名命名规范为 example_test.go 测试用例的函数名称必须以 Test 开头,例如:TestExample 每个重要的函数都要首先编写测试用例,测试用例和正规代码一起提交方便进行回归测试 。
四、变量
var 变量名 变量类型
如:
var name stringvar age intvar isTrue bool
var ( name string age int isTrue bool)
4.3 变量的初始化
package mainimport "fmt"func main() { var name string var age int var isTrue bool fmt.Println(name) fmt.Println(age) fmt.Println(isTrue)}
执行结果为:
0false
var 变量名 变量类型 =
如下:
package mainimport "fmt"func main() { var name string = "Jack" var age int =20 var isTrue bool = true fmt.Println(name) fmt.Println(age) fmt.Println(isTrue)}
执行结果为:
Jack20true
4.3.3 类型推导
var 变量名 =
如下:
package mainimport "fmt"func main() { var name = "Jack" var age =20 var isTrue = true fmt.Println(name) fmt.Println(age) fmt.Println(isTrue)}
执行结果如下:
Jack20true
4.3.4 一次性给多个变量赋值
Go 语言支持一次性对多个变量进行赋值,如下:
package mainimport "fmt"func main() { var name, age, isTrue = "Jack", 20, true fmt.Println(name) fmt.Println(age) fmt.Println(isTrue)}
执行结果如下:
Jack20true
变量名 :=
如下:
package mainimport "fmt"func main() { name := "Jack" age := 20 isTrue := true fmt.Println(name) fmt.Println(age) fmt.Println(isTrue)}
执行结果如下:
Jack20true
4.5 匿名变量
如下:
import "fmt"func getNameAndAge()(string,int){ return "Jack", 20}func main() { name, _ := getNameAndAge() fmt.Println(name)}
执行结果为:
Jack
五、常量
5.1 定义单个常量
定义常量使用 const 关键字,定义格式如下:
const 常量名 常量类型 =
如:
const PI float64 = 3.14
5.2 类型推导
const PI = 3.14
const ( WIDTH = 100 HEIGHT = 200 )
另一种方式是直接使用多重赋值的方式,如下:
const WIDTH, HEIGHT = 100, 200
const ( WIDTH = 100 HEIGHT DEPTH)
5.4 iota 的用法
iota 比较特殊,可以被认为是一个可被编译器修改的常量,它默认开始值是0,每调用一次加1。遇到 const 关键字时被重置为 0
5.4.1 连续定义多个常量,每个常量值递增
如下,定义三个变量
package mainimport "fmt"func main() { const ( ID1 = iota ID2 = iota ID3 = iota ) fmt.Println(ID1) fmt.Println(ID2) fmt.Println(ID3)}
执行结果为:
012
5.4.2 连续赋值时,可以省略后面的赋值
如下,同样表示将此三个常量赋值为 0, 1, 2
func main() { const ( ID1 = iota ID2 ID3 ) fmt.Println(ID1) fmt.Println(ID2) fmt.Println(ID3)}
执行结果为:
012
5.4.3 通过 _ 可跳过一些值
如下,可以实现跳跃赋值
package mainimport "fmt"func main() { const ( ID1 = iota _ ID3 ) fmt.Println(ID1) fmt.Println(ID3)}
执行结果为:
02
如下,
package mainimport "fmt"func main() { const ( ID1 = iota ID2 = 100 ID3 = iota ) fmt.Println(ID1) fmt.Println(ID2) fmt.Println(ID3)}
执行结果为:
01002
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~