type 類型名 struct{
字段1 類型
字段2 類型
}
定義接口
type interface_name interface{
方法名 method_name1
方法名 method_name2
....
}
定義結構體
type struct_name struct{
}
func(struct_name_var struct_name) method_name1() [返回類型]{
//方法實現
}
func(struct_name_var struct_name) method_nam2() [返回類型]{
//方法實現
}
範例:
package main
import "fmt"
type Mobile interface {
call()
message()
}
type Iphone struct {
}
type Samsung struct{
}
func (iphone13 Iphone) call(){
fmt.Println("iphone13, call phone number")
}
func (iphone13 Iphone) message(){
fmt.Println("iphone13, use message")
}
func (s22 Samsung) call(){
fmt.Println("samsung, call phone number")
}
func (s22 Samsung) message(){
fmt.Println("samsung, use message")
}
func main() {
var mobile Mobile
mobile=new(Iphone)
mobile.call()
mobile.message()
var mobile2 Mobile
mobile2=new(Samsung)
mobile2.call()
mobile2.message()
}
顯示
iphone13, call phone number
iphone13, use message
samsung, call phone number
samsung, use message
空接口類型
package main
import (
"fmt"
)
func main() {
var any interface{}
any = 100
fmt.Printf("value:%d type:%T \n", any, any)
any = "aaa"
fmt.Printf("value:%s type:%T \n", any, any)
testFunc(100)
testFunc("test")
}
func testFunc(par interface{}){
fmt.Println(par)
}
value:100 type:int
value:aaa type:string
100
test