初识golang-包的引用

写在前面:之前一直是写python的,发现最近大厂都在转go,为了职(减)业(少)生(发)涯(量),决定自学go,开帖记录学习go的踩坑之路,希望对像我一样初识go的coder有点帮助。

go的环境变量

为什么先说环境变量,因为go包之间的调用涉及go的编译,但是go编译时,项目目录必须在GOPATH中,利用go env查看本机go的环境变量。

macbook_pro:go m$ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/m/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/m/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/64/lf1hgd2n6m76x7vp8x30nfsm0000gn/T/go-build109540047=/tmp/go-build -gno-record-gcc-switches -fno-common"

比较重要的有以下两个

GOROOT="/usr/local/go"   #go安装路径

GOPATH="/Users/m/go"     #项目所在路径,go的工作空间,可以修改成你的项目目录,修改方式点击

如果用GoLand编辑器也可以在设置中添加,如下图

GOPATH下需要包含bin,pkg,src三个文件夹,具体用途如下:

        bin:编译后生成的可执行文件

        pkg:编译后生成的文件

        src:存放源代码

 

go包之间的引用

步入正题,先介绍下我的项目目录,有图有真相

等我先去画个图。。。

图画好了,费了我好几万脑细胞。。。

代码如下:

/Users/m/go/src/main.go

package main

import (
	"common"
	"fmt"
)

func main()  {
	common.A()
	fmt.Println("This is func main")
}
/Users/m/go/src/common/a.go

package common

import (
	"fmt"
)

func A() {
	B()
	fmt.Println("This is func A")
}
/Users/m/go/src/common/b.go

package common

import (
	"base"
	"fmt"
)

func B() {
	base.C("")
	fmt.Println("This is func B")
}
/Users/m/go/src/base/c.go

package base

import (
	"fmt"
)

func C(x string) {
	fmt.Println("This is func C, receive func b" + x)
}

接下来需要把上面的包先编译,再安装

/Users/m/go/src

macbook_pro:src m$ go build common
macbook_pro:src m$ go install common
macbook_pro:src m$ go build base
macbook_pro:src m$ go install base

然后运行main.go函数

/Users/m/go/src

macbook_pro:src m$ go run main.go 
This is func C, receive func b
This is func B
This is func A
This is func main

总结:
    1.同目录下引用:不需要导包,直接可用

    2.非同目录下引用:需要先导包

    3.go程序中可以被外部包调用的函数和变量,函数名和变量名必须是大写字母开头,小写字母开头是不能被外部包调用的。

查看下一篇golang排坑基础知简介请点

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值