Go 之基础速学 (三) 包的引用、“实体类” 的使用套路 (t)

做phper的可能很少了解到包的概念,因为php当中没有包的概念,java里面有
包:最直观的作用就是协调和组织我们的代码,方便归类和复用,提高代码的可维护性
另外大家也看到了标题当中双引号引起了“实体类”,是因为golang里面是不存在类的概念的!

我们先来看包的引用:
包最直观的作用就是协调和组织我们的代码,方便归类和复用,提高代码的可维护性
找到你的gopath目录创建包目录
E:\gopath\src\com.huxiaobai
一般包的目录都是以项目的网址命名,咱也不知道为啥,就这么弄吧,com.huxiaobai就是一个包也可以理解为一个项目吧!
我们知道golang语言一定是要有入库文件的,我们创建一个公共的包叫做appmain子包,在这个main子包当中你可以随意定义一个文件名字随意,只不过package main必须是这么写,并且该文件当中必须要有 func main(){}
比如:
Go 之基础速学 (三) 包的引用、“实体类”的使用套路(t)
另外我们再去定义一个服务的包叫做sevices包吧,在这个包里面创建NewsService.go和UserService.go文件
UserService.go里面的package services
NewsService.go里面的package services
默认情况下创建好了文件会自动的将package的名称命名为上级包的名称
当然也可以改 但是 如果要改的话 那么services包里面的所有的go文件的package必须保持一致!
比如在
com.huxiaobai/services/NewsService.go的package abc
com.huxiaobai/services/UserService.go的package abc
也是可以的 但是必须在services子包里面的所有文件的package保持一致!
一般不建议修改 默认上级包的名称即可!
a.同一个包内之间的相互调用
Go 之基础速学 (三) 包的引用、“实体类”的使用套路(t)
Go 之基础速学 (三) 包的引用、“实体类”的使用套路(t)
直接调用即可!前提是package包名称一致!直接调用函数即可!
b.跨包之间的函数调用
Go 之基础速学 (三) 包的引用、“实体类”的使用套路(t)
Go 之基础速学 (三) 包的引用、“实体类”的使用套路(t)
Go 之基础速学 (三) 包的引用、“实体类”的使用套路(t)
要点在图中都已经很清晰了:
a.跨包调用那么被调用的函数首字母必须大写 大写之后 包内的相互调用也要大写了哦
b.在main包当中输入GetUser()的时候会自动给你加载services包路径 com.huxiaobai/services表示的是包路径

以上就是包的引入和包内函数调用以及跨包函数调用的要点!是不是很简单?

现在我们在来看一下struct
golang里面不像java或者php当中有class类的概念 一般可以使用struct来实现类似的感觉
直接上代码吧:
UserModel.go文件内容:

package models
//struct类型 也是和string int array 等基本类型一致  但是struct是一种结构体 可以理解为定义“类” 但是gaolang当中是不存在类的概念的
type UserModel struct {
   //相当于在“类”里面定义属性 必须要首字母大写 不然在外包当中无法调用到
   Uid int
   Uname string
}
//定义struct结构体里面的方法 可以理解为php当中类里面的方法
//(u UserModel) 表示将UserModel这个struct结构体引入进来 方便我们在方法里面通过u.Uname调用struct结构体里面的“属性”
//ToString 首字母大写 方便外包调用
//string 表示该方法返回结构类型是字符串类型
func (u UserModel) ToString() string {
   return "用户名称是"+u.Uname
}

入库文件调用如下:

package main
import (
   "com.huxiaobai/models"
   "fmt"
   )
//main函数是入口函数  不能有参数 也不能有返回值
func main(){
   user:=new(models.UserModel)
   user.Uname="huxiaobai_001"
  fmt.Println(user.ToString())
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
胡军
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!