大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
今天就跟大家聊聊有关golang中结构体和方法的应用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
成都创新互联公司是专业的象山网站建设公司,象山接单;提供成都网站设计、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行象山网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
结构体用来定义复杂的数据结构,存储很多相同的字段属性
1、结构体的定义以及简单使用
package main import ( "fmt" ) func main() { type Student struct { //定义结构体 name string age int } s1 := new(Student) // 定义指向结构体的指针 s1.name = "xiaomu" s1.age = 10 fmt.Printf("name:%s\nage:%d\n", s1.name, s1.age) }
结构体定义的三种方式,例如上面的Student类型,有如下方式定义
①var s1 Student 在内存中直接定义一个结构体变量
②s1 := new(Student) 在内存中定义一个指向结构体的指针
③s1 := &Student{} 同上
通过以下方式获取存储的值
①s1.name
②s1.name或者(*s1).name
③同上
2、struct中的“构造函数”,称之为工厂模式,见代码
package main import ( "fmt" ) type Student struct { //声明结构体 Name string Age int } func NewStudent(name string, age int) *Student { // 返回值指向Student结构体的指针 return &Student{ Name: name, Age: age, } } func main() { s1 := NewStudent("xiaomu", 123) // 声明并且赋值指向Student结构体的指针 fmt.Printf("name: %s\nage: %d", s1.Name, s1.Age) }
3、特意声明注意事项!!!
结构体是值类型,需要使用new分配内存
4、匿名字段,直接看下面代码
package main import ( "fmt" ) func main() { type Class struct { ClassName string } type Student struct { //定义结构体 name string age int Class // 定义匿名字段,继承了该结构体的所有字段 } s1 := new(Student) // 定义指向结构体的指针 s1.ClassName = "xiaomu" fmt.Printf("ClassName:%s\n", s1.ClassName) }
struct的方法
1、在struct中定义方法并且使用
package main import ( "fmt" ) type Student struct { //定义结构体 name string age int } func (stu *Student) OutName() { // 定义Student方法 fmt.Println(stu.name) } func main() { s1 := new(Student) // 定义指向结构体的指针 s1.name = "xaiomu" s1.OutName() }
2、结构体继承结构体,其中被继承结构体的方法全部为继承结构体吸收
package main import ( "fmt" ) type ClassName struct { className string } func (cla *ClassName) OutClassName() { fmt.Println(cla.className) } type Student struct { //定义结构体 name string age int ClassName // 继承ClassName结构体的所有 } func (stu *Student) OutName() { // 定义Student方法 fmt.Println(stu.name) } func main() { s1 := new(Student) // 定义指向结构体的指针 s1.className = "xiaomu" s1.OutClassName() }
看完上述内容,你们对golang中结构体和方法的应用有进一步的了解吗?如果还想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读。