go语言中的结构体与方法详解

互联网 20-6-19

结构体用来定义复杂的数据结构,存储很多相同的字段属性

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() }

更多相关知识请关注go语言教程栏目

以上就是go语言中的结构体与方法详解的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 结构体
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Golang 可以反编译吗?

相关资讯