在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
目录:
struct声明和定义1、Go中面向对象是通过struct来实现的, struct是用户自定义的类型。 type User struct { Username string Sex string Age int AvatarUrl string } 注意:type是⽤用来定义一种类型 2、struct初始化⽅方法1 var user User user.Age = 18 user.Username = “user01” user.Sex = “男” user.AvatarUrl = “http://my.com/xxx.jpg" 注意:使⽤用变量量名+ ‘.’ + 字段名访问结构体中的字段 3、 struct初始化方法2 var user User = User { “Username” : “user01”, “Age”: 18, “Sex”: “男”, “AvatarUrl”: “http://my.com/xxx.jpg”, } 注意:也可以部分初始化 更简单的写法: user := User { “Username” : “user01”, “Age”: 18, “Sex”: “男”, “AvatarUrl”: “http://my.com/xxx.jpg”, }
4、struct初始化的默认值 var user User fmt.Printf(“%#v\n”, user)
5、结构体类型的指针 var user *User = &User{} fmt.Printf(“%p %#v\n”, user)
var user *User = &User { “Username” : “user01”, “Age”: 18, “Sex”: “男”, “AvatarUrl”: “http://my.com/xxx.jpg”, }
var user User = new(User) user.Age = 18 user.Username = “user01” user.Sex = “男” user.AvatarUrl = “http://my.com/xxx.jpg"
struct的内存布局以及构造函数1、结构体的内存布局: 占用一段连续的内存空间
2、结构体没有构造函数, 必要时需要自己实现 package main import "fmt" // struct定义 type User struct { Username string Sex int Age int AvatarUrl string } func main() { // 初始化 var user User user.Age = 18 user.AvatarUrl = "http://baidu.com/image/xxx.jpg" user.Sex = '男' user.Username = "user01" fmt.Printf("user.username=%s age=%d sex=%s avatar=%s\n", user.Username, user.Age, user.Sex, user.AvatarUrl) // 初始化方法2 var user2 = User{ Username: "user02", Age: 18, Sex: '女', AvatarUrl: "http://xxx.baidu.com/image/xxx.jpg", } fmt.Printf("user2=%#v\n", user2) }
匿名字段和struct嵌套1、匿名字段: 即没有名字的字段 type User struct { Username string Sex string Age int AvatarUrl string } // 匿名字段 type User struct { Username string Sex string Age int AvatarUrl string int string } 注意:匿名字段默认采⽤用类型名作为字段名 2、结构体嵌套 type Address struct { City string Province string } type User struct { Username string Sex string Age int AvatarUrl string address Address }
3、匿名结构体 type Address struct { City string Province string } type User struct { Username string Sex string Age int AvatarUrl string Address }
4、匿名结构体与继承 type Animal struct { City string Province string } type User struct { Username string Sex string Age int AvatarUrl string Address }
5、冲突解决 type Address struct { City string Province string CreateTime string } type Email struct { Account string CreateTime string } type User struct { Username string Sex string Age int AvatarUrl string Address Email CreateTime string }
struct与tag应用1、字段可见性,大写表示可公开访问,小写表示私有 type User struct { Username string Sex string Age int avatarUrl string CreateTime string }
2、tag是结构体的元信息,可以在运行的时候通过反射的机制读取出来 type User struct { Username string `json:”username”,db:”user_name”` Sex string `json:”sex”` Age int `json:”age”` avatarUrl string CreateTime string } 字段类型后⾯面,以反引号括起来的key-value结构的字符串串,多个tag以逗号隔开。
|
请发表评论