• GO语言的包


    一、每个 Go 程序都是由包构成的。

    工作空间内基本目录

    --src

    --pkg

    --bin

    在src下的源目录下的代码是以包形式组织的,编译后安装可以把包安装到pkg,入口包可以生成二进制文件到bin下面。

    编译时的依赖查找默认路径就是工作空间src和pkg以及GOROOT下相应目录。

    二、模块(包依赖管理)1.11后提供 go mod 包依赖管理工具,go.mod是每个包内的配置文件。

           当利用go get 获取包时,会根据go.mod下载依赖

    环境变量配置:

    export GOPROXY=https://goproxy.io-----解决墙的问题
    export GO111MODULE=on----------------解决依赖下载的问题

    历史原因:

    网络原因无法下载谷歌下的包,当从git下载到本地时,目录名称跟实际发布包路径不一致,所以需要修改

    go mod的出现解决了这个问题。


    程序从 main 包开始运行。

    本程序通过导入路径 "fmt" 和 "math/rand" 来使用这两个包。

    按照约定,包名与导入路径的最后一个元素一致

    例如,"math/rand" 包中的源码均以 package rand 语句开始。

    package main
    import (
        "fmt"
        "math/rand"
    )
    func main() {
        fmt.Println("My favorite number is", rand.Intn(10))
    }
    三、自定义包/库

    1、创建一个程序
    $ mkdir $GOPATH/src/github.com/user/hello
    package main
    
    import "fmt"
    
    func main() {
    	fmt.Printf("Hello, world.
    ")
    }
    $ go install github.com/user/hello
    

    注意,你可以在系统的任何地方运行此命令。go 工具会根据 GOPATH 指定的工作空间,在 github.com/user/hello 包内查找源码。

    若在从包目录中运行 go install,也可以省略包路径:

    $ cd $GOPATH/src/github.com/user/hello
    $ go install

    2、创建一个库
    $ mkdir $GOPATH/src/github.com/user/stringutil

          接着,在该目录中创建名为 reverse.go 的文件,内容如下:

    // stringutil 包含有用于处理字符串的工具函数。
    package stringutil
    
    // Reverse 将其实参字符串以符文为单位左右反转。
    func Reverse(s string) string {
    	r := []rune(s)
    	for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
    		r[i], r[j] = r[j], r[i]
    	}
    	return string(r)
    }
    

    现在用 go build 命令来测试该包的编译:

    $ go build github.com/user/stringutil
    

    当然,若你在该包的源码目录中,只需执行:

    $ go build

    3、使用库

    确认 stringutil 包构建完毕后,修改原来的 hello.go 文件(它位于 $GOPATH/src/github.com/user/hello)去使用它:

    package main
    
    import (
    	"fmt"
    
    	"github.com/user/stringutil"--------代码中package关键字
    )
    
    func main() {
    	fmt.Printf(stringutil.Reverse("!oG ,olleH"))---代码中package关键字,会去找到合适的文件依赖
    }
    

    无论是安装包还是二进制文件,go 工具都会安装它所依赖的任何东西。 因此当我们通过

    $ go install github.com/user/hello
    
    来安装 hello 程序时,stringutil 包也会被自动安装。
    四、包名

    包名

    Go源文件中的第一个语句必须是

    package 名称
    

    这里的 名称 即为导入该包时使用的默认名称。 (一个包中的所有文件都必须使用相同的 名称。)

    Go的约定是包名为导入路径的最后一个元素:作为 “crypto/rot13” 导入的包应命名为 rot13

    可执行命令必须使用 package main

    链接成单个二进制文件的所有包,其包名无需是唯一的,只有导入路径(它们的完整文件名) 才是唯一的。

    共多关于Go的命名约定见 实效Go编程

    
    
  • 相关阅读:
    第六章 (循环结构二)
    MySQL改密码
    第八章
    第二章 变量 数据类型和运算符
    [Windows Phone 7璀璨]北漂1.0在线歌词播放器一.项目搭建及版权声明
    [Windows Phone 7璀璨]北漂1.0在线歌词播放器二.歌曲按艺术家分类实现
    [这不是Windows Phone 7]FitnessTrackerPlus(健身)一.数据库介绍
    [学习笔记]Silverlight4 RIA 开发全程解析[项目全程记录]第二章为站点流行而准备:提供一个可扩展的体系结构(写作中)
    [这不是Windows Phone 7]FitnessTrackerPlus(健身)二.架构搭建
    ERP成本核算
  • 原文地址:https://www.cnblogs.com/justart/p/11660828.html
Copyright © 2020-2023  润新知