1. 程式人生 > 其它 >GOGOUP-10.結構體和類

GOGOUP-10.結構體和類

萬丈高樓平地起-結構體和類

  1. golang的結構體的作用和dotnet的class類似。
  2. 結構體的宣告
    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)
    
    }
    
  3. 執行結果
  4. 結構體新增繫結方法和繼承
    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()
    }
    
  5. 執行結果