【Go 語言社群】解析Go語言程式設計中的struct結構
阿新 • • 發佈:2022-05-04
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")
}