golang中包的概念

go中,甚至最直接的程序都会包的一部分。通常情况下默认包是main包,目前为止一直使用的包。如果程序是main包的一部分,go会生成二进制文件,运行该文件时,他将调用main()函数

 

  当使用main包时,程序将生成独立的可执行文件,但当程序非是main包的一部分是,go不会生成二进制文件,它生成包存档文件.a文件

go中,包名称需遵循约定,包使用其导入路径的最后一部分作为名称,go标准库包含math/cmplx包,

import "math/cmplx"
cmplx.Inf()

1.14之后的版本已经没有了go  root  /go  path的概念了,go mod 就行。现在你的项目路径

go  mod  init  dir  就行了,如果不go mod  init  ,import包的时候就认不到包

 你现在可以开始编写包的函数和变量,不同于其他编程语言,go不会提供共有私有关键字,以指示是否外部调用。

package cal

var logMessage = "[LOG]"
var Version = "1.0"

func internalSum(number int) int {
	return number - 1
}
func Sum(number1, number2 int) int {
	return number1 + number2
}

上行代码因为没有main函数,go  build  后不会生产.exe

让我们看一下该代码中的一些事项,只能从包调用logMessage 变量。可以从任何位置访问Version变量。包内调用internalSum函数,可以从任何位置访问Sum函数。

    现在将包放到模块中,go mod 通常包含可提供相关功能的包,包的模块还指定了go运行你组合在一起的代码所需的上下文。go mod有助于其他研发人员引用代码的特定版本,并更轻松的处理依赖项,另一个优点是,我们的程序源代码无序严格存在放gopath/src目录中。

 运行此命令后,就会变成mod的名称,其他程序中,将使用该名称进行引用,命令还会创建一个名为go.mod的新文件。

 ../helloworld/main.go

package main

import (
	"fmt"
	"gocodeing/gotest/cal"
)

func main() {
	total := cal.Sum(3, 5)
	fmt.Println(total)
	fmt.Println("Version:", cal.Version)
}

 

go mod init  helloworld

replace  关键字指定使用本地目录,而不是模块的远程位置。这种情况下,由于helloworld和cal程序在同一父文件夹中,因此../cal  

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值