1. 程式人生 > 其它 >【Go 語言社群】解析Go語言程式設計中的struct結構

【Go 語言社群】解析Go語言程式設計中的struct結構

struct和C語言的很相似,模擬出class的功能,但是不完全的!沒有建構函式等! struct的申明

package main
import "fmt"
type Person struct {
 Age  int
 Name string
}
func main() {
 //初始化兩種
 a := Person{}
 a.Age = 2
 a.Name = "widuu"
 fmt.Println(a)
 b := Person{
  Age:  24,
  Name: "widuu",
 }
 fmt.Println(b)
}
go指標操作
如下我們要對數值進行改變,先要取記憶體地址,然後再記憶體地址上改變他的引用
package main
import "fmt"
type Person struct {
 Age  int
 Name string
}
func main() {
 b := &Person{
  Age:  24,
  Name: "widuu",
 }
 fmt.Println(b)
 G(b)
 fmt.Println(b)
}
func G(per *Person) {
 per.Age = 15
 fmt.Println(per)
}

匿名結構 (1)匿名內部結構的使用

 func main() {
  a := struct {
   name string
   Age  int
  }{
   name: "widuu",
   Age:  19,
  }
  fmt.Println(a)
}
package main
import "fmt"
type Person struct {
 Age    int
 Name   string
 Member struct {
  phone, City string
 }
}
func main() {
 a := Person{Age: 16, Name: "widuu"}
 a.Member.phone = "13800000"
 a.Member.City = "widuuweb"
 fmt.Println(a)
}
(2)匿名類值不需要資料名稱、在賦值的時候兩個結構必須是一樣的
package main
import "fmt"
type Person struct {
 string
 int
}
func main() {
 a := Person{"joe", 19}
 var b Person
 b = a
 fmt.Println(b)
}

嵌入結構 (1).嵌入式結構模擬其他程式有個繼承的概念,只是概念哦

package main
import "fmt"
type Person struct {
 Name string
 Age  int
}
type student struct {
 Person
 work string
}
func main() {
//例項化時 如果嵌入式的結構沒有資料結構的名字 就預設是型別名字Person:Person
 a := student{Person: Person{Name: "widuu", Age: 19}, work: "IT"}
 fmt.Println(a)
}

(2).結構方法

package main
import "fmt"
type A struct {
 Name string  //這個是共有的大寫 如果是小寫的name就包內可以用私有的
}
type B struct {
 Name string
}
func main() {
 a := A{}
 b := B{}
 a.print()
 b.print()
}
//通過type不同,來取相同的方法的名稱
func (a *A) print() {
 fmt.Println("A")
}
func (b *B) print() {
 fmt.Println("B")
}