遵义建设厅网站首页,如何添加百度指数,一般通过什么键来快速渲染场景,icp备案 网站备案一、Hello World
最简单的教程#xff0c;就需要从最简单的事情开始说起#xff1a;
mkdir myappcd myappgo mod init myapp // myapp是主项目名 这行命令将生成一个go.mod文件#xff0c;这个文件会记录所有的包的依赖关系#xff0c;一个空的go.mod只有项目名称和go版本…一、Hello World
最简单的教程就需要从最简单的事情开始说起
mkdir myappcd myappgo mod init myapp // myapp是主项目名 这行命令将生成一个go.mod文件这个文件会记录所有的包的依赖关系一个空的go.mod只有项目名称和go版本号. nano main.go :
package mainimport fmtfunc main() {fmt.Println(Hello World!)
}go run main.go 直接运行或 go build -o run.exe 编译执行。 二、import go标准库/包
导入go语言的标准库非常简单参见上例的Hello World中我们就导入了一个名为 fmt 的标准库调用这个库里的Println函数fmt.Println(“Hello World!”) 三、import 第三方包
nano main.go:
package mainimport (fmtgithub.com/kataras/iris/v12 // iris是一个开源的Web框架
)func main() {fmt.Println(Hello World!)app : iris.New()fmt.Println(app.APIBuilder)
}
如何安装第三方包 这时候直接执行 go build -o run.exe 会报错提示找不到这个包 no required module provides package github.com/kataras/iris; to add it: go get github.com/kataras/iris/v12 错误信息里也提示了你需要用 go get 命令去获取这个包现在输入 go get github.com/kataras/iris/v12 当然出于不能明说的原因当你输入这行命令后基本上是没有反应的我们还需要这样一下 go env -w GOPROXYhttps://goproxy.cn,direct 然后再次输入 go get github.com/kataras/iris/v12 系统将自动下载 iris 所需的文件再次执行: go build -o run.exe 一切正常。
现在再次打开 go.mod会发现自动添加了一堆包的依赖关系因为iris这个包本身也引用了大量其他的第三方包这些都会记录在go.mod里。
那么刚才系统自动下载的iris包的文件实际存储在哪 首先我们要知道GOPATH系统变量的值在Windows下用 echo %GOPATH% Linux下用 echo $GOPATH 得到这个变量的值后打开 C:\Users\USERNAME\go\pkg 发现这些包都在这。 四、import 自己创建的包
在主项目的根目录下创建一个子目录mkdir mypackagecd mypackagenano mypackage.go
package mypackage // 注意包名是我们自定义的与文件夹名称一致import (fmt
)func Sayhi() { // 这里定义了一个Sayhi的函数注意首字母一定要大写否则外部无法访问这和其他OOP语言的public和private类似fmt.Println(Hello I come from another Package)
}
回到主项目 nano main.go
package mainimport (fmtmyapp/mypackage // myapp是我们的主项目名mypackage是我们自定义包名
)func main() {mypackage.Sayhi() // 调用mypackage下的Sayhi函数
}五、后记
1、关于package main的特殊性 任何一个go项目都需要一个package main和一个 func main()函数否则程序没有入口无法运行。假设我们现在尝试一下在main.go中的第一行不使用package main而是随便创建一个比如package myapp然后用build -o run.exe编译尽管代码可以通过编译但却无法执行 2、 相同的package但文件名不同的函数调用
比如说现在有2个文件: main.go 和 file.go
file.go 的内容是
package mainimport fmtfunc Sayhello() {fmt.Println(Hi, I come from file1)
}main.go的内容是
package mainfunc main() {Sayhello()
}尽管函数 Sayhello 并不存放在 main.go 中但因为两个文件的第一行都是package main因此在main.go 中我们不需要任何声明就可以正常调用 file.go 里的函数。存储在不同的文件中的代码通过相同的package名聚合在一起简单地将之视为一个大文件即可。