定義別名後的類型和原來的類型不是一樣的類型,舉例:json
package main import "fmt" type integer int func main() { var i integer = 1 var j int = 2 //強制轉換成int類型才行(雖然integer也是int類型) j = int(i) //強制轉換成integer類型才行(雖然integer也是int類型) i = integer(j) fmt.Println(j) fmt.Println(i) }
結構體中的tag:markdown
package main import ( "fmt" "encoding/json" ) type Student struct { //注意,要大寫才行 Name string `json:"name"` Age int `json:"age"` Score int `json:"score"` } func main() { var stu Student = Student{ Name: "stu01", Age: 18, Score: 80, } fmt.Println(stu) //打包成json data, err := json.Marshal(stu) if err == nil { fmt.Println(data) fmt.Println(string(data)) } }
結構體中的tag首字母必須大寫!由於json.Marshal()是在另外一個包裏面。但想要輸出的json是小寫能夠用:
json:"name"
ide
結構體的賦值,取值:函數
package main import ( "time" "fmt" ) type Cart struct { name string age int } type Train struct { Cart int start time.Time } func main() { var t Train t.age = 1 t.int = 6 t.Cart.name = "cartName" t.start = time.Now() fmt.Println(t) }
結構體的函數(注意引用傳遞來改變結構體的值):指針
package main import "fmt" type Student struct { Name string Age int Score int } func (p1 Student) init1(name string, age,score int) { p1.Name = name p1.Age = age p1.Score = score } //指針寫法 func (p2 *Student) init2(name string, age,score int) { p2.Name = name p2.Age = age p2.Score = score } func main() { var stu1 Student //如此只是複製,而非引用。 stu1.init1("zhangsan", 18, 100) fmt.Println(stu1) var stu2 Student //按理來講要這樣寫 (&stu2).init2("zhangsan", 18, 100) fmt.Println(stu2) //然而,這樣寫也是能夠的 stu2.init2("zhangsan", 18, 100) fmt.Println(stu2) }