## 一、定義

## 二、匿名字段實例
~~~
package main
import "fmt"
// 結構體
type User struct {
Id int
Name string
Age int
}
type Article struct {
// 匿名字段
//這里的User會把我們定義的User結構體放到這里(Article)
User
title string
desc string
}
func main() {
// 順序初始化
s1 :=Article{User{1,"aaa",20},"111","aaaa"}
fmt.Println(s1)
// 部分初始化
s2 :=Article{User:User{Id: 1},title: "111",desc: "aaaa"}
fmt.Println(s2)
}
~~~
## 二、匿名字段同名字段
~~~
package main
import "fmt"
// 結構體
type User struct {
Id int
Name string
Age int
}
type Article struct {
// 匿名字段
//這里的User會把我們定義的User結構體放到這里(Article)
User
title string
desc string
Name string
}
func main() {
var a Article
a.Name = "a1"
fmt.Println(a)
//默認是就近原則賦值
//如需要賦值上一層,需要顯式調用
a.User.Name = "a2"
fmt.Println(a)
}
~~~
結果:
{{0 0} a1}
{{0 a2 0} a1}
## 三、所有的內置類型和自定義類型都是可以作為匿名字段來使用
~~~
package main
import "fmt"
// 結構體
type User struct {
Id int
Name string
Age int
}
type mystrs string
type Article struct {
// 匿名字段
//這里的User會把我們定義的User結構體放到這里(Article)
User
int
mystrs
}
func main() {
s1 := Article{User{1,"22",22},2,"220"}
fmt.Println(s1)
}
~~~
## 五、指針類型匿名字段
~~~
package main
import "fmt"
// 結構體
type User struct {
Id int
Name string
Age int
}
type mystrs string
type Article struct {
// 匿名字段
//這里的User會把我們定義的User結構體放到這里(Article)
*User
int
mystrs
}
func main() {
s1 := Article{&User{1,"22",22},2,"220"}
fmt.Println(s1)
}
~~~
- 一、數組
- 二、切片
- 三、copy
- 四、MAP
- 五、結構體
- 六、結構體參數
- 七、面向”對象“
- 1、匿名字段
- 2、方法
- 3、包和封裝
- 4、接口
- 5、異常處理
- 八、Json
- 九、文件操作
- 1、寫文件
- 2、讀取文件內容
- 3、拷貝文件
- 十、反射
- 1、查看類型,字段和方法
- 2、查看匿名字段
- 3、修改基本類型的值
- 4、修改結構體的值
- 5、調用方法
- 十一、并發編程
- 1、并行和并發
- 2、協程
- 3、runtime包
- 5、channel的使用
- 6、close
- 7、定時器
- 8、select
- 9、協程同步鎖
- 十二、socket編程
- 十三、Http編程
- 十四、并發爬蟲和數據處理
- 1、簡易爬蟲實例
- 2、并發爬取圖片
- 3、讀文件中的數據
- 4、數據清洗
- 其他
- 1、推薦文章