小菜鸡学程式!用 Golang 来跟世界说 Hello 吧!

这系列文章会用 Golang 来做说明,希望可以用比较简单、直白的方式来说明一些程式的概念,让没有基础的人也可以从头学起,如果有什么错误的地方,希望各位大神帮忙纠正了!


在这边我们就不说明要怎么安装 Golang 到你的电脑,因为不同作业系统的步骤也不太一样,有很多其他文章可以参考,还没安装过的人就当作是回家作业啦,参考其他大神们的文章自己摸索看看啰!

你可以在你的终端机下这个指令,看看跑出来的结果是什么,就知道你有没有把 Golang 安装好啰!

 $ go version

这行指令会显示你所安装的 Golang 的版本,其中会有 Golang 版本号 ( go1.13.5 )、电脑所使用的作业系统 ( darwin )、以及处理器指令集 ( amd64 )。如果用这行指令却有出现错误,那多半是没有安装好或是设定环境变数有问题哦,例如出现了 $ bash: go: command not found 之类的就是不对哦!

正确安装好的话应该会出现像下面这样子的结果:

 $ go version go version go1.13.5 darwin/amd64

大家在接触到程式语言的时候,是不是很常听到 Hello World! 这个词呢?

当我们学习一个新的语言的时候,第一个程式就很适合写「Hello World!」,这个程式没有什么複杂的功能,只是让程式印出一行文字而已,但它不仅可以让我们检测看看是不是真的安装好了、设定也都没问题了,也能知道这门语言要如何显示文字、也就是如何显示你程式执行的结果,最重要的还能知道要如何执行这个语言所写出来的程式码。

接下来我们就来看 Golang 的 Hello World! 的範例吧!

我们开一个档案,档案名称为 main.go,内容如下:

package mainimport "fmt"func main() {    fmt.Println("Hello World !")}

以上的程式码,我们可以分为几个部分来理解:

package main
现在我们只是写一个 Hello World! 的单一个档案,但大家应该可以想像,当今天我们是要完成一整个专案的话,整个程式的功能通常可以分为几个不同的部分,我们就可以把一群属于同部分功能的档案设定一样的 package 名字,然后在需要使用到该部分的功能时,去呼叫该 package 中提供的功能。
如果用其他东西来比喻的话,假设我们的专案是一个厨房,厨房会需要可以接受点餐、可以处理食材、要烹饪食物、要清洁等等功能,那我们就可以将程式码按照功能来分类,负责点餐的程式码就分配到package 点餐,处理食材的程式码就分配到package 处理食材,以此类推,整个专案的架构可能就像这样:

厨房专案
| - main.go  (厨房的入口)
| - order/    (负责接受点餐)
  | - order.go
| - process/   (负责处理食材)
  | - vegetable.go (处理蔬菜食材)
  | - meat.go    (处理肉类食材)
| - cook/    (负责烹调)
  | - boil.go (水煮)
  | - fry.go  (炸)
| - clean/  (负责清洁)
  | - floor.go   (清洁地板) 
  | - machine.go  (清洁烤箱等等机器)
  | - dish.go    (清理食物器皿)

就我自己的习惯,会把专案需要的功能分门别类到不同的资料夹,并且再依据功能的细项分出不同档案,以上我会把他们分成 main、order、process、cook、clean 这几个 package。

你有注意到吗,package 名称可以不用跟档案名字一样,另外 package 的名字也不一定要跟资料夹的名字一样喔!

import "fmt"
在很多程式语言里面,有一些语言本身有提供的功能可以去使用,我们可以称这些本身有提供的功能为标準函式库 ( Standard Library ),这里我们所用到的 fmt 也是标準函式库里的一员哦!
-> Golang 标準函式库

标準函式库是什么呢,我们想成是它提供了很多工具,也根据功能为他们分门别类了,比如我们这边使用到的fmt就是一个用来为输入/输出 ( I/O ) 设定格式的 package,像是你想要一行一行的印出文字,或是你想要从输入读取固定格式的字串的这些功能,它都可以帮你达成。

例如:有一个档案里面的内容是很多行固定的格式
   格式是:学生名字 - 数学成绩 - 国文成绩
   那么就很适合用 fmt 里面提供的功能来读取档案内容

除了标準函式库之外,有很多大神们也都开发很多功能并且开源给大家使用,这些工具我们都可以在程式里面使用哦!

当我们想要使用标準函式库或是其他人提供的功能时,只要在程式里写好要从哪里取得这些工具,就可以使用了,这个import "xxx"就是这个用途,后面接的就是这个工具放在哪里,因为标準函式库是这个语言本身就有提供的,所以就直接写出这个 package 的名字即可。

import "fmt"    // 标準函式库

但如果像是其他大神们放在 Github 上供大家使用的,就要写出它的路径,这个路径会是该 package 在你的 $GOPATH/pkg/mod 资料夹里的路径,$GOPATH/pkg/mod 这是使用 Go Modules 这种管理套件的工具,将所需要的套件从网路上下载下来之后,套件在你本地端的路径,使用 Github 上的开源专案的写法如下:

import "github.com/joho/godotenv"    // Github 上的开源专案

func main() {}
这就是整个 main.go 程式码里面的进入点了,这是在宣告有一个型别是func 的东西,它的名字是 main,左右大括号里就是这个函式 (func) 会执行的程式码了。

在这里我们要印出一行文字,所以在前面 import 的部分把能供这个功能的工具 fmt 给放进来,让我们能使用 fmt 提供的 Println 功能,而 Println Print line 顾名思义就是可以让你印出一行文字,所以我们写 fmt.Println("Hello World !") 就可以印出这行文字啰!


最后的最后,我们要怎么执行这份档案呢?

只要使用go run的指令,就会去执行后面所给的程式码档案,所以我们要执行main.go这个档案,就像这样下指令:

 $ go run main.go

你就可以看到终端机上显示你传进fmt.Println()中的字串啰,以这份範例程式而言,也就是印出Hello World !

来看图!!的确是印了Hello World !之后有换行哦!!


希望大家都能试着把 Golang 环境架好,然后用 fmt 提供的函式来印印看文字!
有任何问题或指正都欢迎留言给我,谢谢各位!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章