8000 Go简明手册——Go创建并使用本地宝 · Issue #185 · holdyounger/ScopeBlog · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Go简明手册——Go创建并使用本地宝 #185
Open
@holdyounger

Description

@holdyounger

Go简明手册——Go创建并使用本地宝

[toc]

> 是各种类型和函数的集合。在包中,如果标示符(类型名称,函数名称,方法名称)的首字母是大写,那这些标示符是可以被导出的,也就是说可以在包以外直接使用。

$GOPATH :环境变量(指向一个或多个目录),以及其子目录 src 目录的,当我们使用 import 关键字导入包的时候,Go 语言会在 $GOPATHGOROOT 目录中搜索包。

创建并使用自定义包

> 源文件
> 注意点:
> 1. go文件名和文件夹名并没有关系,文件名可以是任意的,文件定义的package 才是标识
> 2. 方法定义一定得是首字母大写
> 3. 自定义包不能和导入处于同级目录,必须建一个文件夹存放自定义包

先看一下目录结构,以下示例是导入两包,一个是add,一个是simpleinterest

│  go.mod
│  main.go
│  README.md
│
├─add
│      add.go
│
└─simpleinterest
        simpleinterest.go

步骤说明

1 创建package文件夹

mkdir package

go mod init packagetest

执行上述命令后,会生成 go.mod 文件,内容如下所示

module packageTest

go 1.20

2 创建各个文件

main.go

package main

import (
	"fmt"
	"log"
	"packageTest/add" //导入 add 包 这个包必须放在$GOPATH下才可
	"packageTest/simpleinterest"
)

var p, r, t = 5000.0, 10.0, 1.0

/*
* init function to check if p, r and t are greater than zero
 */
func init() {
	println("Main package initialized")
	if p < 0 {
		log.Fatal("Principal is less than zero")
	}
	if r &
73DC
lt; 0 {
		log.Fatal("Rate of interest is less than zero")
	}
	if t < 0 {
		log.Fatal("Duration is less than zero")
	}
}

func main() {
	c := add.Add(1, 2)                      //调用 add 包中的 add 函数
	si := simpleinterest.Calculate(p, r, t) // 调用 simpleinterest 包的 Calculate 函数
	fmt.Println(c)
	fmt.Println("Simple interest is", si)
}

simpleinterest/simpleinterest.go

package simpleinterest

import "fmt"

/*
 * init function added
 */
func init() {
	fmt.Println("Simple interest package initialized")
}

//Calculate calculates and returns the simple interest for principal p, rate of interest r for time duration t years
func Calculate(p float64, r float64, t float64) float64 {
	interest := p * (r / 100) * t
	return interest
}

add/add.go

package add

func Add(a int, b int) (num int) {
	return a + b
}

3 执行并调试

输出如下所示

Main package initialized
Simple interest package initialized
3
Simple interest is 500

blog link Go简明手册——Go创建并使用本地宝

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0