Go语言开发过程中,实现某功能的包,包含一个变量和一个函数方法,例如下面所示:
package Car
import "fmt"
var m_Name string
func Name() {
fmt.Println(m_Name)
}
在调用过程中如下所示:
package main
import "Car"
func main() {
Car.SetName("volvo")
Car.Name()
Car.SetName("Link&co")
Car.Name()
}
这样写的问题点在于,没有实例化的Car对象,第二次调用是覆盖了前项的操作,无法同时保留多个对象。
修改后的代码如下:
使用结构体,将变量封装起来,函数方法需要使用结构体的指针调用
package Car
import "fmt"
type Car struct {
m_Name string
}
func InitCar(name string) *Car {
var c Car
c.m_Name = name
return &c
}
func (pCar *Car) Name() {
fmt.Println(pCar.m_Name)
}
调用方法如下:
package main
import "demo"
func main() {
pCar1 := demo.InitCar("volvo")
pCar1.Name()
pCar2 := demo.InitCar("Link&co")
pCar2.Name()
}
这样就可以同时保持多个对象。