快速上手(三)

news/2024/11/7 10:45:42/

一、项目

Go 项目须放在 $GOPATH/src/项目 下,其大致结构如下:

F:\GoPath
├── bin
├── pkg
└── src└── hello   // 项目1|    └── hello.go  // 项目中文件└── test   // 项目2└── test.go  

1.11 版本后引入 Module 包管理机制,项目文件就可以放在任意目录,也解决了包依赖管理等问题。

二、Go 文件

go 文件已 .go 结尾,命名以小写字母组成,也可以是下划线连接,下面是示例:

hello.go
test_hello.go

代码结构

package main    import "fmt"    func main() {fmt.Println("Hello World!")
}
  • package main:每个 Go 文件都需要定义 package 包名称,表示当前文件所属的包
  • import fmt:导入一个模块,fmt.Println 打印输出
  • func main() 程序入口函数,因为定义了 package main

三、运行

三种方式运行:

  • go build:编译为二进制(可执行文件),再运行
  • go run:等价于 go build,再执行可执行文件,相当于二者合一
  • go install:编译并将编译文件放在 $GOPATH/src/$GOPATH/pkg/ 目录

go build

// 切换到项目目录,目前只有在一个 hello.go 文件
F:\GoPath\src\hello>dir  
hello.go// 编译
F:\GoPath\src\hello>go build// 编译后生成一个 hello.exe 文件,unix 是 hello 可执行文件 ./hello 执行即可
F:\GoPath\src\hello>dir  
hello.go    hello.exe// 执行
F:\GoPath\src\hello>hello.exe                          
Hello World!                                           

其他可选参数:

go build -n     // 编译时会显示编译信息
go build -o 名称    // 指定可执行文件名称

go run

可直接运行 go 文件,生成的可执行文件保存在系统临时目录中,可使用:go run -work main.go 查看:

go run hello.goF:\GoPath\src\hello>go run -work hello.go
WORK=C:\Users\hj\AppData\Local\Temp\go-build149010642
Hello World!

go install

编译并将编译文件放在 $GOPATH/src/$GOPATH/pkg/ 目录

// 切换到项目目录
go install// 查看可执行文件
F:\GoPath\bin>dir
hello.exe

注意:若项目没 main 包(只是一个类库),则 go install 生成的包文件会放在 $GOPATH/pkg 目录;有 main 包则可执行文件生成在 $GOPATH/bin 目录中

包文件

包文件可以当做一个类库给其他程序使用。

1、创建一个项目 utils 用于生成包文件(类库):

$GOPATH/src/
└── utils└── page.go
package utils
/*
实现一个数字相加的功能,接收两个整数,函数内部把两个值相加并返回
*/
func Add(n1 int, n2 int) int {return n1 + n2
}

go install 生成包文件:

cd utils
go install

命令执行成功,会在 $GOPATH/pkg/linux_amd64 生成一个 utils.a 的包文件。

2、创建一个新项目 crm,内部调用 utils.a 包文件:

$GOPATH/src/
└── crm└── main.go
package main
import ("fmt""utils" // 导入utils包
)
func main() {// 调用utils包中定义的Add函数result := utils.Add(1, 2)fmt.Println(result)
}

接下来编译 crm 项目,但不能使用 build、install,否则会直接调用 utils 项目而不是调用 utils.a 包文件,故而需要手动编译:

// 切换到 crm 项目中
cd /src/crm// 编译main.go
// -I 选项指定了包的安装路径,供main.go导入使用, 编译完成生成 main.o 文件
go tool compile -I $GOPATH/pkg/darwin_amd64 main.go// 链接main.o
// -L 选项指定了包的安装路径,链接完成之后生成 main 文件(也可以是 main.exe 等其他文件名)
go tool link -o main -L $GOPATH/pkg/darwin_amd64 main.o// 编译完毕后,会在当前目录生成一个 main 的可执行文件和 main.o 包文件
[root@localhost crm]# ls
main  main.go  main.o// 执行
[root@localhost crm]# ./main
13

四、输出

go 输出分为两种:

  • 内置函数提供:Print、Pringln 函数,不推荐使用,官方不保证后续会保留次功能,可能会被移除,用于标准错误输出而非标准输出
  • fmt 标准库(推荐)

内置函数

  • print:输出
  • println:输出并在最后位置添加换行符
package main//import "fmt"func main() {print("输出")println("输出1")    // 进行了换行操作println("输出2")
}

输出:

[root@localhost test]# go run test.go 
输出输出1
输出2

fmt 标准库

fmt 标准库是官方推荐的输出方式,总共有三种使用方式:

  • fmt.Print:输出
  • fmt.Println:输出并在末尾添加换行符
  • fmt.Printf:格式化输出,第一个参数为占位符的字符串,后面参数用于格式化字符串
package mainimport "fmt"func main() {fmt.Print("输出")fmt. Println("输出2")fmt.Println("输出3")fmt.Printf("我的名字叫:%s,今年:%d,我的英文成绩为:%.2f", "rose", 18, 93.20123)
}

输出:

[root@localhost test]# go run test.go 
输出输出2
输出3
我的名字叫:rose,今年:18,我的英文成绩为:93.20

格式化符号

%b    表示为二进制
%c    该值对应的unicode码值
%d    表示为十进制,格式化整型
%o    表示为八进制
%q    该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
%x    表示为十六进制,使用a-f
%X    表示为十六进制,使用A-F
%U    表示为Unicode格式:U+1234,等价于"U+%04X"
%E    用科学计数法表示
%f    用浮点数表示,十进制小数
%s    格式化字符串
%.2f 保留小数点后两位(四舍五入)

其他格式化占位符,可查看:Go 编译器安装目录/src/fmt/doc.go 查看。

五、注释

  • 单行注释://
  • 多行注释:/* */

http://www.ppmy.cn/news/180462.html

相关文章

手指的状态

1、手指有三个关节,分别是指尖关节、指节中关节和指根关节。 它们通常被用于描述手指的运动。这三个关节的角度范围如下: 指尖关节:也称为近端指节,位于指尖和第二个关节之间。它允许手指向前弯曲,通常的弯曲范围为0到…

总手、现手

股市最小交易量是1手.为100股,对于一只股票最近的一笔成交量叫现手,从开盘到即时的成交量叫总手。现手数是说明电脑刚刚自动成交的那次成交量的大小。现手累计数就是总手数, 即成交量。总手数与流通股数的比称为换手率, 它说明持股人中有多少股是当天买入的。换手率高,说明买卖…

[windows系统]win11系统升级后,笔记本没有声音了。30块钱买的经验...

问题描述 今天打开电脑,莫名其妙的就没有声音了。尝试了卸载声卡驱动重装,但最终也没有解决。就花了30块钱去淘宝上找了电脑维修店铺远程。 解决方法 他们是通过todesk远程过来的,我看了他们操作的全过程,其实解决方法超级简单…

记我的 15 款 MacBook Pro 13.3 寸维修(开不了机)+换屏的经历

remark 我的 MacBook Pro 有一天突然开不了机,拿去 Apple Store 检测,这里记录一下。 流程大概是: 先在苹果官网预约天才吧(选定地点和时间,并且填写自己的信息,描述问题等);按照预…

13-新手小白如何选购笔记本电脑?

笔记本相比台式机最大的优势在于便携性了,特别适合大学生或者经常外出的人群。对于新手小白来说,面对琳琅满目的笔记本型号,往往不知道如何选购一台合适自己的笔记本电脑,那么新手小白如何选购笔记本电脑?下面装机之家…

提升苹果电脑速度的10个小技巧

众所周知,随着时间的流逝,包括Mac在内的所有计算机的速度都会降低。除了换电脑,还是有许多简单的调整可以提高计算机的性能并加快运行速度较慢的Mac,而且这些调整不会花费一分钱。1.升级macOS 许多人仍然相信操作系统升级的神话总…

深度体验中国长城2020版笔记本电脑有感

深度体验中国长城2020版笔记本电脑有感 1. 背景交待 1.1. 初识Linux 第一次接触Linux是2004年,当时应该是RedFlag比较火的时候,Redhat 命名还是9的时候。在老唐(好同学)的诱导下玩得很嗨,加上第一台买的二手&#x…

python 苹果 劣势_Mac与Windows各自的优势是什么?

其实视窗系统(WINDOWS)是比UNIX要晚很多,WIN3.1只是个雏形,95开始大力发展,BUG很多,但是到了98SE初步成型,XP更是一代经典,WIN7已经很稳定了 MAC OS基于UNIX,象征旧事物(新事物未必一定好&#…