文章15 | 阅读 7620 | 点赞0
本文主要介绍关于Go语言编程的一些基础知识,包括Go编程的一些规则、格式、标识符、关键字、包导入、一般结构等内容。
在Go中,几乎所有的东西(变量、常量、函数…)都会有一个标识符,关于Go中标识符的命名规则,要注意以下几点:
区分大小写
有效的标识符必须以字母(可以适用任何UTF-8编码的字符)或者下划线开头
以下是无效的标识符
1ab(以数字开头)
a+b(包含运算符)
case(关键字)
Go中一共有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 |
首先需要注意一点:Go语句的结尾不需要加分号;
因为这个工作编译器在编译的时候已经自动帮我们做了,编译器会根据一些规则在判断出语句末尾的地方自动添加上分号;
接下来回到正题,这里的大括号是{},像我们写一个函数、或者是写个if,for语句都会用到大括号,在使用大括号时需要注意:
func sum(a int, b int) int {return a+b}
当然并不推荐这样写。
根据上面1、2点的规则,使用大括号的时候都必须强制这么写:
func printHW(){
fmt.Println("Hello World")
}
这么做的原因,可以结合以下一开始提到的编译器自动帮我们添加上分号这个机制,假如把左括号放在声明语句的下面一行,那么在编译的时候声明语句将被添加上分号,如func printHW();
导致编译出错。
下面先展示一段Go的模板程序
package main
import "fmt"
const c = "C"
var v int = 5
type T struct{}
func init() {
}
func main() {
var a int
Func1()
// ...
fmt.Println(a)
}
func Func1() { // exported function Func1
//...
}
Go程序一般结构:
Go 程序是通过package来组织的,每个Go文件都属于且仅属于一个包,一个包可以由许多go文件组成。必须在Go源文件中非注释的第一行指明这个文件属于哪个包。
通过import
关键字来导入其它的包
通过const
关键字来进行常量的定义
函数体外部使用var
关键字来进行全局变量的声明和赋值
通过type
关键字来进行结构体struct和接口interface的声明
通过func
关键字来进行函数的声明
关于init() 函数:
它是一个初始化函数,如果某个包里面有init()的话,会首先调用init(),当然可以不包含该函数
它不能被人为调用,而是在每个包完成初始化后自动执行,并且执行优先级比main高
每个源文件都只能包含一个 init 函数。初始化总是以单线程执行,并且按照包的依赖关系顺序执行
Go程序的执行顺序如下:
Go程序是通过package来组织的。我们上面的程序首行是package main
,是将包含main函数的Go源文件包含在main包里面。这里有两点需要注意:
导入包的格式 :import "packageName"
如果有多个包需要导入,也可以采用合并的写法
import {
"fmt"
"io"
}
导入包后,可以使用packageName.funcName
来对包中的函数进行调用,如fmt.Println("hello,world")
导入包之后如果未调用其中的函数或者类型将会报出编译错误imported and not used: xxx
(坚决不冗余一行代码~~~)
当使用第三方包时,不同的包名字可能会相似或者相同,这时候可以使用别名来进行区分和调用
import io "fmt"
func main(){
io.Println("io is anorther name of fmt")
}
还有另一种省略调用包的方式,导入包时用一个.
来表示,调用时可以省略包名,这种方式不能和别名同时使用。(不推荐使用这种省略调用,容易混淆)
import . "fmt"
func main(){
Println("hello,world")
}
所谓“可见性”,是指程序定义的变量、常量、函数等是否可以被外部的包所调用。在Go中,使用大小写来决定该变量、常量、类型、接口、结构或函数是否可以被外部包所调用。根据约定:
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/xah100147/article/details/106077961
内容来源于网络,如有侵权,请联系作者删除!