1 Star 0 Fork 1

liushiju / learn_Go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
01.基础入门_编写Go的第一个程序.md 6.38 KB
一键复制 编辑 原始数据 按行查看 历史
liushiju 提交于 2021-09-30 17:12 . 编写Go的第一个程序

一、第一个程序

ch01/main.go

package main
import "fmt"
func main() {
    fmt.Println("Hello, 世界")
}
  • 程序输出结果
[root@localhost ch01]# pwd
/home/liushiju/git/gotour
[root@localhost ch01]# go run ch01/main.go 
Hello, 世界
  • 命令说明

go:Go语言开发工具包提供的命令,可以运行Go语言代码,并进行编译,生成二进制文件等

run:go命令的子命令,表示运行Go语言代码的意思

ch01/main.go就是写的代码文件,整个go run ch01/main.go表示运行main.go里面的Go语言代码

二、程序结构分析

要让一个Go语言程序成功运行起来,只需要package mainmain函数这两个核心部分;package main代表的是一个可运行的应用程序,而main函数则是这个应用程序的主入口

第一行package main

  • 代表当前ch01/main.go文件属于哪个包
  • package是Go语言声明包的关键字
  • main是要声明的包名,在Go语言中main是一个特殊的包,代表你的Go语言项目是一个可运行的应用程序,而不是一个被其他项目引用的库

第二行import "fmt"

  • 是导入一个fmt
  • import是Go语言的关键字,表示导入包的意思

第三行func main()

  • 定义了一个函数
  • func是Go语言中的关键字,表示定义一个函数或者方法的意思
  • main是函数名
  • ()空括号表示这个main函数不接受任何参数

在Go语言中main函数是一个特殊的函数,它代表整个程序的入口,也就是程序在运行的时候,会先调用main函数,然后通过main函数再调用其他函数,达到实现项目业务需求的目的

第四行fmt.Println("Hello, 世界")

  • 通过fmt包的Println函数打印"Hello,世界"这段文本
  • 想要使用一个包,必须先导入
  • Println函数是属于包fmt的函数,这里需要它打印输出

第五行大括号}

  • 表示main函数体的结束

三、Go语言环境搭建

下载Go语言开发包

Windows MSI下安装

  • 自行选择64bit或32bit的安装包
  • 下载后双击MSI安装文件,按照提示安装
  • go语言开发工具会安装到c:\Go目录,可另选路径
  • 安装程序会自动添加PATH环境变量中,如果没有【系统 -> 控制面板 -> 高级 -> 环境变量选项】来手动添加

Linux下安装

  • 自行选择64bit或32bit的安装包
  • 解压sudo tar -C /usr/local -xzf go1.15.linux-amd64.tar.gz
  • 添加环境变量/etc/profile或者$HOME/.profile文件中 export PATH=$PATH:/usr/local/go/bin

四、安装测试

[root@localhost ~]# go version
go version go1.15.4 linux/amd64

五、环境变量设置

设置GOPATHGOBIN

  • GOPATH:代表Go语言项目的工作目录,在Go Module模式之前非常重要,现在基本上用来存放适用go get命令获取的项目
  • GOBIN:代表Go编译生成的程序的安装目录,比如通过go install命令,会把生成的Go程序安装到GOBIN目录下,以供在终端使用

Linux和macOS添加内容到/etc/profile或者$HOME/.profile文件保存

export GOPATH=/home/liushiju/golang
export GOBIN=$GOPATH/bin

Windows操作系统中

  • 【控制面板 -> 高级 -> 环境变量】

六、项目结构

采用Go Module的方式,可以在任何位置创建你的Go语言项目。

  • 项目位置:/home/liushiju/git/gotour
cd /home/liushiju/git/gotour
  • 创建一个Go Module项目
go mod init src  #src为Go 的Module
  • 上面命令执行成功后,会生成一个go.mod文件, 然后在当前目录下创建一个main.go文件
[root@localhost gotour]# cat go.mod 
module src

go 1.15
[root@localhost git]# tree gotour
gotour
├── ch01
│   └── main.go
├── go.mod
└── lib
  • 其中main.go是整个项目的入口文件,里面由main函数。
  • lib目录是项目的子模块,也可以继续嵌套为子模块的子模块

七、编译发布

完成项目后,可以编译生成可执行文件,也可以把它发布到$GOBIN目录,以供在终端适用

  • 编译ch01/main.go go build ./ch01/main.go

  • 测试

[root@localhost ch01]# ./main 
Hello, 世界
  • 以上生成的可执行文件在当前目录,也可以把它安装到$GOBIN目录或者任意位置
[root@localhost gotour]# go install ./ch01/main.go 
[root@localhost gotour]# main
Hello, 世界

# 使用go install命令即可,在任意终端,输入main回车,都会打印"Hello, 世界"

八、跨平台编译

Go 语言开发工具包的另一强大功能就是可以跨平台编译。什么是跨平台编译呢?就是你在 macOS 开发,可以编译 Linux、Window 等平台上的可执行程序,这样你开发的程序,就可以在这些平台上运行。也就是说,你可以选择喜欢的操作系统做开发,并跨平台编译成需要发布平台的可执行程序即可。

  • Go 语言通过两个环境变量来控制跨平台编译,它们分别是 GOOSGOARCH
  • GOOS:代表要编译的目标操作系统,常见的有 Linux、Windows、Darwin 等
  • GOARCH:表要编译的目标处理器架构,常见的有 386、AMD64、ARM64 等

这样通过组合不同的GOOS和GOARCH,就可以编译出不同的可执行程序

  • 编译windows AMD64的可执行文件
[root@localhost gotour]# GOOS=windows GOARCH=amd64 go build ./ch01/main.go
[root@localhost gotour]# ls
ch01  ch02  go.mod  lib  main.exe

关于 GOOS 和 GOARCH 更多的组合,参考官方文档$GOOS and $GOARCH 这一节即可

九、Go编辑器

  • Visual Studio Vode + Go扩展插件

  • 牌 IDE 公司 JetBrains 推出的 Goland

十、作业

改编示例"Hello,世界"的代码,打印出自己的名字

package main
import "fmt"
func main(){
    fmt.Println("Hello, Hanson世纪")
}
[root@localhost ch01]# go run zuoye.go
Hello, Hanson世纪
Go
1
https://gitee.com/liushiju/learn_Go.git
git@gitee.com:liushiju/learn_Go.git
liushiju
learn_Go
learn_Go
main

搜索帮助