本文共 1689 字,大约阅读时间需要 5 分钟。
定义别名后的类型和原来的类型不是同样的类型,举例:
package mainimport "fmt"type integer intfunc 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:
package mainimport ( "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"
结构体的赋值,取值:
package mainimport ( "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 mainimport "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)}
转载于:https://blog.51cto.com/5660061/2346644