zoukankan      html  css  js  c++  java
  • golang包引用解析

    golang包引用解析

    环境变量配置如下:

    • GOROOT----[C:Go]
    • GOPATH----[F:workspacego_home]

    vs code配置如下:

    F:workspacego_home 是总的golang工作空间, 在下面建立两个必须的目录 src(必须[F:workspacego_homesrc]), pkg(必须[F:workspacego_homepkg]), bin(非必须. go intanll时自动创建).

    以后每一个单独的项目都是在 F:workspacego_home 单独创建一个目录. 比如下面:

    • F:workspacego_homesrc est1
    • F:workspacego_homesrc est2

    test1test2 这是两个不同的项目. golang 主要是通过这样的目录结构, 来管理包的关系. 使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别

    其中重要的是, 要理解应用包的定义. 应用包就是一个个独立的包体, 一个包一般是某个功能的源码文件组成的目录(可以有多层的子目录属于这个包). 其他在最顶层的包目录, 一般还会有个test文件,用于单元测试.

    那么程序怎么运行呢?
    在项目顶层创建一个main.go(程序运行入口), 包名注意一定是 package main.

    看例子, 以下是整个demo的文件结构:

    F:workspacego_homesrc estcalculatecalculate.go

    //calculate.go
    package calculate
    
    func Mysqrt(val float64) float64 {
    	z := 0.0
    	for i := 0; i < 1000; i++ {
    		z -= (z*z - val) / (2 * val)
    	}
    	return z
    }
    

    F:workspacego_homesrc esthellohello.go

    //hello.go
    package hello
    
    import "fmt"
    
    func Hello() {
    	fmt.Println("hello")
    }
    

    F:workspacego_homesrc estmain.go

    //main.go
    package main
    
    import (
    	"fmt"
    	"test/calculate"	//这里import的是目录名, 不是包名字, 在golang中, 包名可以和目录名不一致的
    	"test/hello"		//这里import的是目录名, 不是包名字, 在golang中, 包名可以和目录名不一致的
    )
    
    func main() {
    	hello.Hello()		//注意注意注意: 这里应用的是包名, 不是目录名
    	fmt.Println(calculate.Mysqrt(5))
    }
    

    //这里import的是目录名, 不是包名字, 在golang中, 包名可以和目录名不一致的

    //注意注意注意: 这里应用的是包名, 不是目录名

    这两个主要是要注意的, 总的来说是 import 的是包的路径, 引用包的东西是使用包名

  • 相关阅读:
    怎么接音响
    怎样区分音箱与音响
    什么是卡盟
    小白晋级达人必备 电视接口使用介绍(4)
    液晶电视插有线电视信号线的是哪个接口 HDMI是什么接口
    Google 镜像站搜集
    屏幕检测
    网站引流
    夜神安卓模拟器
    html5模拟平抛运动
  • 原文地址:https://www.cnblogs.com/liangjf/p/9584879.html
Copyright © 2011-2022 走看看