光速入门GO基本结构

基本结构

go语言的组成比较简单,而且语法也非常简单。

简单即是强大,GO语言被称之为云时代的C语言。

也证实了GO语言的简洁。下面我们来看看GO语言有多简洁。

如果你没有安装过GO语言请参考 光速安装Go语言环境

安装完成后再继续看本篇文章

hello world

package main

import "fmt"

func main(){
  fmt.Println("Hello world!")
}

将这写代码复制并保存为 .go 结尾的程序

之后我们在终端中切换到保存.go的文件目录

image-20200726134411883

这是我保存的目录,接下来执行我们go编译程序提供的命令

go run main.go

image-20200726134458575

现在成功输出我们的"hello world!"

下面我们看一看这个程序都由那些语句构成

GO中的包组织方式也非常简单。

可以编译成可执行文件的入口文件,包名只能是main。

第一行中我们声明了一个包,名称为main。

作为我们整个可执行程序的入口点。

import "fmt"

import 指令引入了一个包。

这个包的位置可以是本地的相对目录.也可以是网络路径。

现在我们只需要知道他会引入一个其他地方编写的代码。

这里引入的是 fmt 包中含有输出到终端的函数。

可以理解为将这个包的代码放到我们的go文件之中。

声明函数

基本组成
func //可以声明一个函数.

//基本的结构如下所示 一个函数基本由下面的结构组成
func functionName(){
  
}

以上是一个函数的基本组成,func关键字代表function 是function 的简写。

后面跟的是函数名称,遵循函数名称的起名没什么特殊的项。

永远都以字母开头。

括号中跟的是函数的参数。一般很少有无参的函数。

之后跟的是我们的函数体 以 {}开头及结尾。之间的代码都将作为函数的一部分。

main函数

之前说过main包作为一个可执行程序的入口点。

有了包作为入口,程序还是找不到一个开始执行的代码入口。

所以我们还有一个特殊的函数入口main函数。

这个函数没有参数也没有返回值。区别于其他语言。

如C/C++中main函数会有两个参数。并且还有返回值。

标准的C++mai n函数可能如下所示。

#include "iostream"

using namespace std;

int main(int argc,char **argv){
  
  cout << "Hello world" << endl;
  
  return 0;
}

可见C++会在main函数中传入两个参数.

第一个参数是int类型, 传入的是终端中传入参数的个数。

第二个参数是char类型, 传入的是终端中输入参数的数组。

而且还会返回一个int类型状态码给操作系统.

然而在GO中并没有这些,完全精简成一个无参无返回的main函数

用GO语言模拟C++默认main函数
package main

import "fmt"
import "flag"
import "os"

func main() {
	flag.Parse() //初始化输入参数

	fmt.Println(len(flag.Args())) //输出输入参数个数 相当于argc
	for _, arg := range flag.Args() {
    //循环遍历各个输入参数.相当于argv
		fmt.Println(arg)
	}

	fmt.Println("Hello world!")
	os.Exit(2) //退出当前程序并返回一个状态码给操作系统。
}

以上既是GO语言模拟C++默认的一个程序。

有读取输入参数个数参数和返回一个状态码给系统的能力。

image-20200726142652614

这次我们使用一个新命令.

go build

在我们main包目录下直接执行这个命令会生成一个和我们main包所在的目录相同名称的一个可执行文件.

下面我们执行程序并携带几个参数来验证一下

image-20200726142807127

第一行是我们的参数个数。

后面每行代表一个行数。

然后我们查看一下程序执行后返回给系统的状态码。

image-20200726142900011

状态码查看也没有问题。

我们完全模拟了一个C++程序的默认功能。依赖的是GO语言提供的相关包。

一些小的知识点

GO语言中无需;号作为一条命令的结束。

只有需要写;的时候才需要写分号。

以后会遇到需要写;的时候。

变量名称永远以字母开头。对任何语言来说都是没问题的。所以记着字母开头。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

2 thoughts on “光速入门GO基本结构”