【小白版】最简单的 goland package 教程包括自定义包的使用 您所在的位置:网站首页 怎么创建包名 【小白版】最简单的 goland package 教程包括自定义包的使用

【小白版】最简单的 goland package 教程包括自定义包的使用

2024-07-11 08:33| 来源: 网络整理| 查看: 265

一、Hello World

最简单的教程,就需要从最简单的事情开始说起:

mkdir myappcd myappgo mod init myapp // myapp是主项目名

这行命令将生成一个go.mod文件,这个文件会记录所有的包的依赖关系,一个空的go.mod只有项目名称和go版本号.

nano main.go : package main import "fmt" func 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 main import ( "fmt" "github.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 GOPROXY=https://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 main import ( "fmt" "myapp/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 main import "fmt" func Sayhello() { fmt.Println("Hi, I come from file1") }

main.go的内容是:

package main func main() { Sayhello() }

尽管函数 Sayhello 并不存放在 main.go 中,但因为两个文件的第一行都是package main,因此在main.go 中我们不需要任何声明就可以正常调用 file.go 里的函数。存储在不同的文件中的代码,通过相同的package名聚合在一起,简单地将之视为一个大文件即可。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有