zoukankan      html  css  js  c++  java
  • golang学习笔记--包导入及go 常用命令及参数

    包导入:包导入路劲即代码包在工作区的src目录下的相对路径。

    同一个源码文件中导入的多个代码包的最后一个元素不能重复,否则引起编译错误,如果只导入不使用,同样会引起编译错误

    若想导入最后一个元素名相同的,则需为其中一个起个别名

    eg

    import(
        "github.com/Sirupsen/logrus"
        mylogrus "gopcp.v2/helper/log/logrus"
    )
    

    如果想不加前缀而直接使用某个依赖包中的程序实体,就可以用“.” 来替代别名

    import (
        . ”gopcp.v2/helper/log/logrus"
    )     

    当前源码文件中,可直接使用程序实体

    var logger = NewLogger("gopcp")
    

     标识符首字母大写:公有

     标识符首字母小写:私有

    标识符首字母不可为数字或者下划线

    如果只想初始化某个代码包,而不需要再当前源码文件中使用那个代码包中任何程序实体,就可以用“_”来替代别名。

    import (
       _ ”gopcp.v2/helper/log/logrus"
    ) 
    

      

    包初始化:

    func init(){
        fmt.PrintLn("Initialize...")
    }
    

    对于每一个代码包来说,其中的所有全局变量的初始化,都会在代码包的初始化函数执行前完成,初始化函数都会在main函数执行前执行完毕。  

    package main // 命令源码文件必须在这里声明自己属于main包。
    
    import ( // 引入了代码包fmt和runtime。
    	"fmt"
    	"runtime"
    )
    
    func init() { // 代码包初始化函数。
    	fmt.Printf("Map: %v
    ", m) // 格式化的打印。
    	// 通过调用runtime包的代码获取当前机器的操作系统和计算架构。
    	// 而后通过fmt包的Sprintf方法进行格式化字符串生成并赋值给变量info。
    	info = fmt.Sprintf("OS: %s, Arch: %s", runtime.GOOS, runtime.GOARCH)
    }
    
    // 非局部变量,map类型,且已初始化。
    var m = map[int]string{1: "A", 2: "B", 3: "C"}
    
    // 非局部变量,string类型,未被初始化。
    var info string
    
    func main() { // 命令源码文件必须有的入口函数,也称主函数。
    	fmt.Println(info) // 打印变量info。
    }
    

     输出:

    Map: map[1:A 2:B 3:C]

    OS: windows, Arch: amd64

    go命令:

    go build: 编译代码包或go 语言源码文件,生成可执行文件(同级目录下)
    go clean: 清除因执行其他go命令而遗留下来的临时目录和文件
    go doc: 用于显示go 语言代码包以及程序实体的文档。
    go env:  打印go 语言相关的环境信息
    go fix: 用于修正指定代码包中的源码文件中包含的过时语法和代码调用。(升级时)
    go fmt : 格式化指定代码包中的源文件
    go generate: 用于识别指定代码包中源码文件中的go:generate注释,并执行其携带的任意命令。
    go get: 用于下载、编译并安装指定的代码包及其依赖包
    go install: 用于编译并安装指定的代码包及其依赖包。安装命令源码exe文件到GOBIN指定的目录中,库源码文件产生的.a文件到pkg子目录下
    go list: 用于显示指定代码包的信息
    go run: 用于编译并允许指定的命令源码文件。
    go test: 用于测试指定的代码包
    go tool: 用于运行go 语言的特殊工具
    go vet: 用于检测指定代码包中的go 语言源码,并报告发现可疑代码问题,该命令提供了除编译以外的又一个程序检查方法,可用于找到程序中的潜在错误。
    go version: 用于显示当前安装的go 语言版本信息以及计算环境
    -a 用于强行重新编译所有涉及go 语言代码包
    -n 使命令仅打印其执行过程中用到的所有命令,而不真正执行它们,如果只想查看和验证命令的执行过程,而不想改变任何东西,可用它
    -race: 用于检测并报告指定go 语言程序中存在的数据竞争问题。(并发的检测手段之一)
    -work: 用于打印命令执行时生成和使用的临时工作目录的名字,且命令执行完成后不删除它。不标记,则会删除临时工作目录
    -x 打印其执行过程中用到的所有命令,同时执行它们
    

     

    直接执行go tool命令,可以看到这些特殊的工具

     pprof: 用于以交互的方式访问一些性能概要文件。命令将会分析给定的概要文件,并根据要求提高可读性的输出信息。这个工具可以分析的概要文件包括CPU概要文件、内存概要文件和程序阻塞概要文件。这些包含Go 程序运行信息的概要文件,可以通过标准库代码包runtime和runtime/pprof中的程序来生成。

    Trace: 用于读取Go程序痕迹文件,并以图形化的方式展示出来,它能够让我们深入了解go 程序在运行过程中的内部情况。比如,当前进程中堆的大小以及使用情况。有又比如,程序中的多个goroutine是怎样被调度的,以及它们在某个时刻被调用的原因。go 程序痕迹文件可以通过标准库包runtine/trace和net/http/pprof中的程序来生成。

    Go 命令教程地址:

    https://github.com/Gohackers/go_command_tutorial

     

  • 相关阅读:
    Tornado入门2
    Tornado框架入门
    Nginx下载及安装
    串口通信工程笔记一
    串口通信工程笔记之协议设计
    串口通信之并发与单步
    串口通信属性及事件解析
    串口通信之超时
    VC程序Debug版本和Release版本运行不一致问题
    串口通信之DataReceive事件触发时机
  • 原文地址:https://www.cnblogs.com/saryli/p/11610877.html
Copyright © 2011-2022 走看看