一、Part1_语言结构
1、Go语言的基础组成
1.1包声明
1.2引入包
1.3函数
1.4变量
1.5语句 & 表达式
1.6注释
2、HwlloWorld实例
package main
import "fmt"
func main(){
fmt.Println("Hello World!");
}
2.1程序的各个部分分析
1)第一行代码package main定义了包名,必须在源文件中非注释第一行指明这个文件属于哪个包,如package main;package main表示一个可独立执行的程序,每个Go应用程序都包含一个名为main的包。
2)下一行import "fmt"告诉Go编译器这个程序需要使用"fmt"包(的函数,或其他元素),fmt包实现了格式化IO(输入/输出)的函数。
3)下一行func main()是程序开始执行的函数;main函数是每一个可执行程序所必须包含的,一般来说都是启动后第一个执行的函数(如果有init()函数,则优先执行该函数)。
4)下一行/…/则是注释,在程序执行时将被忽略;单行注释是最常见的注释形式,你可以在任何地方使用以//开头的单行注释;多行注释也叫块注释,均已以/开头,并以/结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。
5)下一行fmt.Println(…)可以将字符串输出到控制台,并在最后自动添加换行符\n。
使用fmt.Print(“hello, world\n”) 可以得到相同的结果。
Print和Println这两个函数也支持使用变量,如fmt.Println(arr)。如果没有特别指定,他们会以默认的打印格式将变量arr输出到控制台。
6)当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的protected)。
3、执行Go程序
1)、打开编辑器如notepad++,将以上代码添加到编辑器中。
2)、将以上代码保存为hello.go。
3)、打开命令行,并进入程序文件保存的目录中。
4)、输入命令go run hello.go,并回车执行代码。
[root@bogon ~]# go run helloworld.go
Hello World!
[root@bogon ~]#
5)、我们还可以通过go build指令来生成二进制文件。
[root@bogon ~]# go build helloworld.go
[root@bogon ~]# ll
total 3832
-rw-------. 1 root root 1243 Jan 15 11:46 anaconda-ks.cfg
-rw-r--r--. 1 root root 1886796 Oct 18 06:00 get-pip.py
-rwxr-xr-x. 1 root root 2026428 Jan 15 22:01 helloworld
-rw-r--r--. 1 root root 75 Jan 15 18:12 helloworld.go
[root@bogon ~]# ./helloworld
Hello World!
注意
需要注意的是 { 不能单独放在一行
package main
import "fmt"
func main()
{
fmt.Println("Hello World!")
}
编译和运行都会报错
[root@bogon ~]# go run helloworld.go
# command-line-arguments
./helloworld.go:5:6: missing function body
./helloworld.go:6:1: syntax error: unexpected semicolon or newline before {
正确写法
package main
import "fmt"
func main(){
fmt.Println("Hello World!")
}
以上学习案例均基于菜鸟教程,https://www.runoob.com/
总结:
1、go的一个可独立执行的程序由以下部分组成包声明、引入包、函数、变量、语句 & 表达式、注释;
2、go的基本指令
go run 文件名.go 执行该程序;
go build 文件名.go 编译该程序,生成二进制文件;
3、{ 不能单独放在一行,执行或编译或报错;