Go--包引用介绍

Go–包引用介绍
最近在学习Go编程,本文简单的叙述如何在Go编程中使用包(包管理)。

和其他大多数语言一样,Go也存在包,并使用package关键字定义一个包。首先介绍在程序中如何引入包,引入包有以下几种方式:

1. 最简单的方式引入一个包的方式是直接引入包,例如:

import "fmt"

import "os"

2. 也可以通过下面的方式将包一块引入,并写在括号内:

inport (

"fmt"

"os"

)

通过上面的方式,可以引入系统包或第三方的包,下面重点介绍如何引入自定义的包和函数:

一般我们将主程序放在src的mian文件夹下(主程序中包含main函数,并将主程序的包名写为package main),将其他模块放在相应的文件夹下,例如下图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GzRX19sI-1577880196404)(go笔记.assets/562773-20151101201522216-650191035.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ak52yblO-1577880234934)(go笔记.assets/562773-20151101201522216-650191035.png)]

主函数在main.go文件中,主函数名也可以为其他,但必须包含main函数。在Go编程中,怎么引入自己编写的模块呢,例如在main.go中如何调用add.go、subtract.go或者是multiply.go中的文件。

add.go与subtract.go在cal文件夹下,所以这两个程序的包名为cal(package cal),multiply.go在multi文件夹下,所以程序的包名为multi(package multi)。如果mian函数要调用add.go或者subtract.go中的函数,必须要引入包"cal"(import “cal”)。要调用multiply.go中的函数,那就要引入包"multi",如果我们在程序中直接写import “multi”,编译器会提示我们can not find package “multi”。因为我们的"multi"包在包"cal"下,所以我们要把包名写完整"cal/multi",下面就可以调用各个文件中的函数了。

Go中如果函数名的首字母大写,表示该函数是公有的,可以被其他程序调用,如果首字母小写,该函数就是是私有的,因此我们只能调用add.go、subtract.go或者multiply.go中的公有函数。具体调用如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EGwRPrG3-1577880196423)(go笔记.assets/562773-20151101203434919-1423652149.png)]

add.go

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X0RVmbDK-1577880196428)(go笔记.assets/562773-20151101204058279-656509134.png)]

subtract.go

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TqJOpv2E-1577880196436)(go笔记.assets/562773-20151101204049279-1142366625.png)]

multiply.go

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tBDmVqAx-1577880196443)(go笔记.assets/562773-20151101204110060-2013626442.png)]

最后注意:文件名可以和该包名不一致,但文件中使用的包名必须要和该包名一致。

go chan

声明一个通道很简单,我们使用chan关键字即可,通道在使用前必须先创建:

ch := make(chan int)
通道(channel)

通道(channel)是用来传递数据的一个数据结构。

通道可用于两个 goroutine 之间通过传递一个指定类型的值来同步运行和通讯。操作符 <- 用于指定通道的方向,发送或接收。如果未指定方向,则为双向通道。

ch <- v    // 把 v 发送到通道 ch
v := <-ch  // 从 ch 接收数据
           // 并把值赋给 v
channel示例1
package main

import "fmt"

var pipe chan int
func add(a int,b int){
	sum :=a+b
	pipe <-sum
}
func main() {
	pipe = make(chan int, 1)
	go add(2,5)
	ret :=<-pipe
	fmt.Println("ret=",ret)
}

>>>ret= 7

go 关键字 创建goroutine 的

Go 允许使用 go 语句开启一个新的运行期线程, 即 goroutine,以一个不同的、新创建的 goroutine 来执行一个函数。 同一个程序中的所有 goroutine 共享同一个地址空间。

channel示例2

通过传参的方式传入通道

package main

import "fmt"

func add(a int, b int, c chan int) {
	sum := a + b
	c <- sum
}
func main() {
	var pipe chan int
	pipe = make(chan int, 1)
	go add(2, 5, pipe)
	ret := <-pipe
	fmt.Println("ret=", ret)
}

定义函数

package main

import "fmt"

func testFunc(a int, b int) int {
	sum := a + b
	return sum
}
func main() {
	ret := testFunc(1, 3)
	fmt.Println(ret)
}


4

这里面的 testFunc(a int, b int) int 三个int分别代表参数a,b以及输出值的类型

多返回值
package main

import (
	"fmt"
)

func calc(a int, b int) (int, int) {
	sum := a + b
	avg := (a + b) / 2
	return sum, avg
}

func main() {
	sum, avg := calc(2, 4)
	fmt.Printf("sum=%d,avg=%d", sum, avg)
}


>>>sum=6,avg=3

欢迎关注公众号 获取更多干货
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值