GOGOUP-10.結構體和類
阿新 • • 發佈:2021-07-08
萬丈高樓平地起-結構體和類
- golang的結構體的作用和dotnet的class類似。
- 結構體的宣告
package main import "fmt" // 定義個結構體 type Student struct { Age int Name string } // 結構體引數是值傳遞 所有呼叫這個方法是不會修改原有的結構體值 func UpdateStudent(stu Student) { stu.Name = "xike" } // 通過結構體指標 修改會成功修改原有結構體值 func UpdateStudent2(stu *Student) { stu.Name = "xike" } func main() { var stu Student stu.Age = 20 stu.Name = "susa" fmt.Println(stu) UpdateStudent(stu) fmt.Println(stu) UpdateStudent2(&stu) fmt.Println(stu) }
- 執行結果
- 結構體新增繫結方法和繼承
package main import "fmt" type Person struct { Age int Name string } // 將方法Call 繫結到結構體Person上 func (person *Person) Call() { fmt.Println("name= ", person.Name, "age= ", person.Age) } // student 繼承了 person類的屬性和方法 type Student struct { Person School string } func (student *Student) Show() { fmt.Println("name= ", student.Name, "age= ", student.Age, "school= ", student.School) } func main() { //宣告一個person物件 person := Person{18, "小明"} person.Call() //宣告一個子物件 student := &Student{} student.Name = "xike" student.Age = 3 student.School = "puxdong" student.Call() student.Show() }
- 執行結果