type是go語法里的重要而且常用的關(guān)鍵字玩荠,type絕不只是對應(yīng)于C/C++中的typedef辛块。搞清楚type的使用,就容易理解go語言中的核心概念struct槐沼、interface曙蒸、函數(shù)等的使用。
一岗钩、類型定義
1纽窟、定義結(jié)構(gòu)體
使用type可以定義結(jié)構(gòu)體
type Preson struct {
name string
age int
}
2、定義結(jié)構(gòu)
使用type可以定義接口
type USB interface {
start()
end()
}
3兼吓、定義新的類型
type Type
4臂港、函數(shù)類型
使用type定義函數(shù)類型
type fun func () int
二、類型別名
類型別名的寫法為:
type 別名 = Type
類型別名規(guī)定:TypeAlias 只是 Type 的別名,本質(zhì)上 TypeAlias 與 Type 是同一個(gè)類型趋艘。就像一個(gè)孩子小時(shí)候有小名疲恢、乳名,上學(xué)后用學(xué)名瓷胧,英語老師又會(huì)給他起英文名显拳,但這些名字都指的是他本人。
三搓萧、類型定義和類型別名的區(qū)別
package main
import "fmt"
type newInt int
type myInt = int
func main() {
var a newInt = 10
var b myInt = 10
// fmt.Println(a == b) //invalid operation: a == b (mismatched types newInt and int)
fmt.Printf("%T, %T\n", a, b) //main.newInt, int
}
a的類型是main.newInt, b的類型是int, myInt類型只在代碼中存在杂数,編譯完成并不會(huì)有myInt類型。