前面的章节可以建议使用线上IDE进行练习与熟悉。
线上 Go IDE的网址在下方
无论是从终端机touch或是用goland新增,请产生一个名为hello.go的档案并输入以下内容:
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
对於简短的程序码,可用go run指令执行!
go run hello.go
Hello World
较为复杂的程序码,则需要先进行指令编译成执行档在执行:
go build hello.go
$ ./hello
Hello World
我们再重新看一次程序码,并配合注解服用:
// Set current package
package main
// Import some package
import "fmt"
// Enter main function
func main() {
// Print out string "Hello World" on stand output.
fmt.Println("Hello World")
}
下方我们将原本的 Hello World 程序改写如下:
// Set current package
package main
// Import some package
import "fmt"
// Enter main function
func main() {
sayHello()
}
// Write down Hello World function
func sayHello() {
// Print out string "Hello World" on stand output.
fmt.Println("Hello World")
}
我们找到Println的说明(command + 左键点选指定函式),可以看到Println的公开介面如下:
func Println(a ...interface{}) (n int, err error) {
return Fprintln(os.Stdout, a...)
}
由这个公开界面可知,Println
接收任意数量的参数,参数为任意型别 (interface{})。该函式会回传两个参数,分别是整数 n
和 err 物件
。n
表示写入的字串长度而 err
回传错误物件,当程序没有发生错误时,err
为空值nil。
我们的范例程序中,我们知道程序不会发生错误,而且也不需要知道字串的长度,故我们忽略程序的回传值。
专案(Project)
可以由N个包(Package)
组成包(Package)
可以有N支程序(.go file)
包(Package)
底下的程序(.go file)
彼此全域变数及函式可以互见,就像在同一支程序里一样包(Package)
的名称 为包所在的资料夹名称
程序(.go fle)
只能属於一个包(Package)
程序(.go fle)
可以有多个变数、函式(function)
程序(.go file)
的名称 不一定要等同於资料夹或包(Package)
的名称主程序(package main)
主程序(package main)
代表我们可以主动 go run 执行
这包程序package main
func main()
func main(){}
就是执行专案时程序的进入点简单来说,他们的阶层关系为
Project(专案) > Package(程序包) > .go file(程序档) > Function(函式)
然後他们也有公认的命名方式:
GOROOT
放的是安装的go语言、官方内建的函式库。
例如经常使用到的fmt就是放在此
import "fmt"
GOPATH
则是放别人开发的第三方套件、以及自己的程序码
import "github.com...(别人的repository)"
这两点应该前个章节已经提及,但因为颇为重要所以在提醒一次。
照惯例通常会把自己写的专案及程序放入GOPATH底下的**src(source)**资料夹里,如果有用Github会再多一层 github.com 及 account。
以上的分法都通常是在较久远的年代,透过glide或dep来管理。自从Go 1.11 推出了gomod後,就不一定要把专案放到GOPATH底下,也可以正常运行但这边还是偏向使用GOPATH及glide套件管理工具
使用者目录 (C:\Users\USER 或 ~/)
- Go (GOPATH
) 如果底下没有bin/pkg/src
目录,别担心,自己新增一个
- bin (放编译过後的可执行档案 二进制档案)
- pkg (放编译过後的library)
- src (放原始码 Source Code)
- [github.com](http://github.com/)
- Jack (使用者名称)
-JackProject (专案名称)
- main.go (主程序)
- Tom
-TomProject
- core (函式库名称)
- core.go
- libs (函式库名称)
- lib.go
- main.go
- [gitlab.com](http://gitlab.com/)
这章节主要让大家撰写第一个Go Application,并告诉大家程序摆放的目录架构、基本Go程序的知识点等,在下个章节则会带大家进入变数
的世界。
>>: LiteX/VexRiscv 简介与使用 (二) 始有昼夜
前言 各位早安,书接上回我们将程序码改得更方便阅读,还加上抓取连结的功能,今天我们要来把这些抓到的资...
套件 在我们写程序时,一定会用很多来支援,让我们更轻松, 尤其是WPF的部分,为了漂亮肯定用了很多套...
图片来源:roadmap.sh 内心剧场之胡言乱语 每个故事都有开头和结尾(?),每个怀有远大(?...
这周要开始学习 cli, git, 用文字指令做一些事情,但还没开始写程序。本周要突破的一道难关...