2020-12-21-GO-Day7-函数101

函数一共有几个特征需要掌握:

  1. Main
  2. init
  3. import
  4. 执行的顺序

先说main函数。main函数只能在pacakge main中。是主函数的入口。有且只能有一个。什么意思呢?
举个列子,在Python中,定义了非常多的函数

    //Python
def funa(): 
    pass
def funb(): 
    pass

那么,如何调用这些函数呢?对,就是if__name__= "main":

    //Python
if__name__= "__main__":
  resulta = funa ()
  resultb = funb ()

而main函数在GO语言中作用,就是python中的if__name__= "main":

  1. init函数
    init函数不局限在package main中,可以定义在不同的package中,一个package可以有1个或者多个init函数。但是建议一个package定义1个init函数

  2. import
    这时是不是会有疑问:定义了package a, package b, 那么在main函数中,如何将其引入呢?类似于把大象装进冰箱用几步

    3.1 用Import 方法,将package a,b...z导入

import (
      "GOPATH"/packagea
      "GOROOT/packagea"
      "html://github..../packagea"
)

并且在main函数中调用

a.Run("this is packageA")
  1. 执行的顺序
    在package main中,按照顺序进行调用
    例如
Package Tree:
$GOPATH= C:\Users\abcd\go
C:\Users\abcd\go\src\awesomeProject1
 main.go //main.go在根目录下
-package  //第一层目录
  -helloworld.go //package mypackage所在目录

helloworld.go的内容

package mypackage
import ("fmt")
var I int

func init(){
    I=0
    fmt.Println("Call mypackage init1")
}

func init(){
    I=1
    fmt.Println("Call mypackage init2")
}

main.go的内容

package main
import (
    _ "awesomeProject1/package"
    "fmt"
)

func main(){
    fmt.Println("\"Hello go.... I = \", mypackage.I")
}
Call mypackage init1
Call mypackage init2
"Hello go.... I = ", mypackage.I

Process finished with exit code 0

不白piao网上的一张图。有知识产权的哦

image.png

当我在编译main.go的时候,需要引用mypackage。这时,当我使用
"awesomeProject1/package"的时候,点GO之后,这一条就消失了。。。

原因就是当编译的过程中,func main()函数或者其他地方并没有对mypackage进行引用!!
因此,这里在"awesomeProject1/package"前面加了"_",表示声明,但不引用。

image.png

你可能感兴趣的:(2020-12-21-GO-Day7-函数101)