zoukankan      html  css  js  c++  java
  • 【原创】go语言学习(十一)package简介

    目录

    • Go源码组织方式
    • main函数和main包
    • 编译命令
    • 自定义包
    • init函数以及执行行顺序
    • _标识符

    Go源码组织方式

    1、 Go通过package的方式来组织源码

    package 包名
    

      注意:任何一个源码都属于一个包

      作用:代码复用和可读性

    2、可执行程序的包名必须为main,并且包含一个main函数

    package main
    import (
        "fmt"
    )
    func main() {
        fmt.Println(“hello world”)
    }
    

      

     3、package组织案例例

    再src/calc的包编辑完成后再pkg中

    main函数和main包

     1、链接工程

    package main  -- |            静态链接

                |----------------------> 可执行文件

    pkg/windows_amd64/.../*.a ---|

    自定义包

     1、除了可执行程序之外,用户可以写自定义包,自定义包编译成静态库

    package calc
    
    // package calc2 不建议这么写
    
    // 包组织方式,自定义包
    // 使用go install生成静态库
    // calc_test中调用静态库
    
    var (
    	Sum int
    )
    
    func Add(a int, b int) int {
    	return a + b
    }
    
    // 小写方法名为私有,不能调用
    func sub(a int, b int) int {
    	return a - b
    }
    

      

    package main
    
    import (
    	"fmt"
    	"github.com/gostudy/listen11/calc"
    	// _ 没有引用保留包
    	// _ "github.com/gostudy/listen11/calc"
    )
    
    // 调用pkgwindows_and64githbu.comgostudylisten11calc.a
    
    // 执行全局变量,再执行init初始化
    var a int = 10
    var b int = 10
    
    // init 函数,再main函数之前执行
    func init() {
    
    	fmt.Println(a, b)
    
    	fmt.Println("init func in main")
    }
    
    // init函数可以多个,可以有多文件,多init,按编译顺序执行
    // 1初始化sub 包
    // 2初始化add import
    // 3初始化main
    func init() {
    	fmt.Println("init2 func in main")
    }
    
    func main() {
    	var sum = calc.Add(2, 3)
    	fmt.Printf("sum=%d
    ", sum)
    }
    

      注意:go_path 要配置好路径

    编译命令

    1、go run运⾏行行go代码, 如果有多个⽂文件,需要把所有⽂文件都写到go run后⾯面

    2、go build 编译go代码,如果是可执行程序,默认会在当前⽬目录⽣生成可执行程序,可以使⽤用-o指定可执行程序生成的目录。

    3、go install编译go代码,并且把可执行程序拷贝到GOPATH的bin目录,自定义或第三方包会拷贝到GOPATH的pkg目录

    init函数以及执行行顺序

    1、一个包里可以有0个或多个init函数,在程序启动时会被自动调用

    package calc
    import (
        "fmt"
    )
    // 先执⾏行行全局
    // 变量量初始化
    var a int=10
    
    // 然后再执行
    // init函数
    func init() {
    }
    
    // 最后执行
    // main函数
    func Add(a, b int) int{
        return a+b
    }
    

      

    2、 如果一个包import另外一个包

    _标识符

    1、_ 没有引用保留包

    package calc
    import (
    “fmt"
    _ “sub”
    )
    func Add(a, b int) int{
    return a+b
    }
    

      

  • 相关阅读:
    ubuntu下java环境变量配置
    批处理 控制 服务
    javascript break up a code line within a text string with a backslash.
    javascript for...in statement
    javascript output str to browser
    javascript RegExp
    javascript try catch throw
    javascript prototype
    javascript box
    java 移位处理
  • 原文地址:https://www.cnblogs.com/wangshuyang/p/11807454.html
Copyright © 2011-2022 走看看