zoukankan      html  css  js  c++  java
  • 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编程

    
    
  • 相关阅读:
    小div在大div中垂直居中方式
    sublime中Vue高亮插件安装
    vue脚手架创建项目(推荐)
    搭建Vue脚手架
    html解决空格显示问题
    css3实现半圆和圆效果
    MySQL通过 LOAD DATA INFILE 批量导入数据
    jQuery ajax 提交表单图片
    Sqlserver风格规范
    前端代码风格规范总结
  • 原文地址:https://www.cnblogs.com/justart/p/11660828.html
Copyright © 2011-2022 走看看