go package的概念,与PHP中的namespace

bloger 2019-11-03 AM 111℃ 1条

在我们运行的第一个go程序的时候,会发现文件的第一行有package main,在写PHP功能模块的时候,在文件第一行也会发现有namespace,那么他们之间有什么区别呢,大家都知到,namespace是为了解决以下2个问题:

  • 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  • 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

而Go程序是通过package来组织的,package这一行告诉我们当前文件属于哪个包,而包名main则告诉我们它是一个可独立运行的包,它在编译后会产生可执行文件。除了main包之外,其它的包最后都会生成*.a文件(也就是包文件)并放置在$GOPATH/pkg/$GOOS_$GOARCH中。

读到这里是不是无形中又感觉有点共同之处?php namespace为了多人协作文件命名问题,实际上也是告诉该类是属于那个应用的,而package是告诉我们当前文件是数据那个包的,是不是明白了点什么,如果这样理解的话,我们学对go运行原理的理解是不是又更深了。
u=2375259772,2935774803&fm=26&gp=0.jpg
接下来我们写第一个程序:输出helloword

package main

import (
    "fmt"
)

func main(){

    fmt.Printf("Hello,world")
}

为了打印Hello, world...,我们调用了一个函数Printf,这个函数来自于fmt包,所以我们在第三行中导入了系统级别的fmt包:import "fmt",这个跟PHP的use又有点类似,我们可以简单的理解为use在条件下也是引入该命名空间下的类文件【导入一个命名空间】,而go中则是使用import导入一个包。

每一个可独立运行的Go程序,必定包含一个package main,在这个main包中必定包含一个入口函数main,而这个函数既没有参数,也没有返回值。

go中的main.main就类似PHP大多数web框架以index.php,是每一个独立的可运行程序的入口点,

标签: package

非特殊说明,本博所有文章均为博主原创。

评论啦~



唉呀 ~ 仅有一条评论


  1. 风轻云淡
    风轻云淡

    我也是学PHP的最近学go,希望跟大佬一起学习!

    回复 2019-11-04 21:20