长沙制作营销型网站项目实例的疑问?
摘要:长沙营销型网站制作,制作网站项目实例,2023能用的磁力搜索引擎,彩票开奖网站建设目录一、构造函数二、继承与重写三、泛型四、反射1 - 反射的基本概念2 - 反射的基础数据类型3 - 反射APIa - 获取Type类型b - 获取struc
长沙营销型网站制作,制作网站项目实例,2023能用的磁力搜索引擎,彩票开奖网站建设目录一、构造函数二、继承与重写三、泛型四、反射1 - 反射的基本概念2 - 反射的基础数据类型3 - 反射APIa - 获取Type类型b - 获取struct成员变量的信息c - 获取struct成员方法的信息d - 获取函数的信息e - 判断类型是否实现了某接口五、reflect.Valuea - 空value判断b - 获取V…
目录一、构造函数二、继承与重写三、泛型四、反射1 - 反射的基本概念2 - 反射的基础数据类型3 - 反射APIa - 获取Type类型b - 获取struct成员变量的信息c - 获取struct成员方法的信息d - 获取函数的信息e - 判断类型是否实现了某接口五、reflect.Valuea - 空value判断b - 获取Valuec - 指针Value和非指针Value互相转换d - 获取Value对应的原始数据e - 通过Value修改原始数据的值f - 通过Value修改sliceg - 通过Value修改map六、反射创建对象七、反射调用函数和成员方法一、构造函数
定义User结构体
type User struct {Name string //表示未知Age int //-1表示未知Sex byte //1男2女3未知
}func main() {u : User{} //构造一个空的User各字段都取相应数据类型的默认值up : new(User) //构造一个空的User并返回其指针
}自定义构造函数
func NewDefaultUser() *User {return User{Name: ,Age: -1,Sex: 3,}
}func NewUser(name string, age int, sex byte) *User {return User{Name: name,Age: age,Sex: sex,}
}单例模式确保在并发的情况下整个进程里只会创建struct的一个实例
type User struct {Name string //表示未知Age int //-1表示未知Sex byte //1男2女3未知
}func NewDefaultUser() *User {return User{Name: ,Age: -1,Sex: 3,}
}var (sUser *UseruOnce sync.Once
)func GetUserInstance() *User {uOnce.Do(func() { //确保即使在并发的情况下下面的3行代码在整个go进程里只会被执行一次if sUser nil {sUser NewDefaultUser()}})return sUser
}func main() {//调用GetUserInstance()得到的是同一个User实例su1 : GetUserInstance()su2 : GetUserInstance()//修改su1会影响su2fmt.Println(su1.Age, su2.Age) //-1 -1su1.Age 20fmt.Println(su2.Age) //20
}二、继承与重写
继承的实现通过嵌入匿名结构体变相实现“继承”的功能因为访问匿名成员时可以跳过成员名直接访问它的内部成员
type Plane struct {color string
}
type Bird struct {Plane
}func main() {bird : Bird{}bird.Plane.color redfmt.Println(bird.color) //red
}重写的实现
type Plane struct {color string
}func (pl Plane) fly() {fmt.Println(plane fly)
}type Bird struct {Plane
}func (bd Bird) fly() {fmt.Println(bird fly)
}func main() {bird : Bird{}bird.Plane.color redfmt.Println(bird.Plane.color) //redfmt.Println(bird.color) //redbird.Plane.fly() //plane flybird.fly() //bird fly
}组合严格意义上来说Go语言并不支持继承它只是支持组合
type Plane struct{}
type Car struct{}//Bird组合了Pl
