結構體
Go的結構體與C/C++類似,聲明方式如下
type 結構體名 struct {
成員聲明...
}
聲明時如下
type Student struct{
id string
name string
}
func main(){
//建立一個結構體
student1 := Student{"123456", "張三"}
//可以使用key-value的形式建立
student2 := Student{id: "123456", name: "張三"}
//忽略的字段為0或空
student3 := Student{name: "張三"}
}
要通路結構體的資料成員,可直接通過點通路:
student1.id
結構體也可以作為參數傳遞
func method(student Stdent){
//方法體
}
也可以用指針指向結構體
type pointer *Student
使用如下
pointer = &student1
pointer.id
接口
與Java的接口一樣,Go可以将不同類型中相同的方法提取出來,作為接口。任何其它類型實作了接口裡的方法就是實作了這個接口。
接口的定義如下
type 接口名 interface{
方法名() [傳回類型]
...
}
接口的實作示例如下
package main
import "fmt"
type Dog interface{
bark()
}
type BigDog struct{
}
type SmallDog struct{
}
func (bigDog BigDog) bark() {
fmt.Println("BigDog is barking.")
}
func (smallDog SmallDog) bark() {
fmt.Println("SmallDog is barking.")
}
func main(){
var dog Dog
dog = new(BigDog)
dog.bark()
dog = new(SmallDog)
dog.bark()
}