# 結構體知識小問題
* * * * *
--: 作者:Mick
時間:2018年10月17日
* * * * *
```
// 結構體聲明的字段是否可以重復
type User struct{
name string
name string
}
// 結構體聲明的方法是否可以重復
type User struct{
}
func(u User) Say(){}
func(u User) Say(){}
// 結構體聲明的字段和方法是否可以重名
type User struct{
Say string
}
func(u User) Say(){}
//嵌入字段的字段是否可以和外部類型的字段重名
type User struct{
name string
}
type admin struct{
User
name string
}
//嵌入字段的方法是否可以和外部類型的方法重名
type User struct{
name string
}
func(u User) Say(){}
type Admin struct{
User
name string
}
func(a Admin) Say(){}
//嵌入字段的字段是否可以和外部類型的方法重名
type User struct{
name string
}
type Admin struct{
}
func(a Admin) name(){
}
//值接收者和指針接收者的區別
type ip []byte
func(i ip) push(v byte){
}
func(i *ip) pop(v byte){
}
// 結構體不能以包含此方法的方式傳遞 B類型的變量不能賦值給A變量 b := B{} getA(b)
type A struct{
age int
}
type B struct{
A
Name string
}
func getA(a A){
fmt.Println(a)
}
```
# 結構體
* * * * *
--: 作者:jsh
時間:2018年9月9日
* * * * *
GO語言是一種靜態類型的編程語言。這意味著,編譯器需要在編譯時知曉程序里每個值的類型。如果提前知道類型信息,編譯器就可以確保程序合理地使用值。這有助于減少潛在的內存異常和bug,并且是編譯器有機會對代碼進行一些性能優化,提高執行效率。
### struct
GO語言允許用戶定義類型。最常用的方法是使用strut,它可以讓用戶創建一個結構類型。
**結構類型通過組合一系列固定且唯一的字段來聲明。**
聲明一個結構類型
~~~
type user struct{
name string
email string
age int
}
~~~
使用結構類型聲明變量,并初始化其零值
~~~
var person user
~~~
任何時候,創建一個變量并初始化為其零值,習慣是使用關鍵字var。這種用法是為了更明確地表示一個變量被設置為零值。如果變量被初始化為某個零值,就配合結構字面量和短變量聲明操作符來創建變量。
使用結構字面量來聲明一個結構類型的變量
~~~
fuzz := user{
name : "fuzz",
email : "fuzz@fuzz.com",
age : 18,
}
~~~
不使用字段名,創建結構類型的值
~~~
fuzz := user{"fuzz","fuzz@fuzz.com",18}
~~~
使用其它結構類型聲明字段
~~~
type admin struct{
person user
level true
}
jsh := admin{
person : user{
name : "jsh",
email : "jsh@jsh163.com",
age : 18
},
level : true
}
~~~
### 明天考試
1.以下結果會輸出什么?
package main
import "fmt"
func main() {
fmt.Println("1"+1)
}
2.切片和數組的顯著差異是什么?
4.編譯執行下面代碼會出現什么?
package main
import "fmt"
func main() {
s1 := []int{1, 2, 3}
s2 := []int{4, 5}
s1 = append(s1, s2)
fmt.Println(s1)
}
4.編譯執行下面代碼會出現什么?
package main
import "fmt"
func main() {
intmap:=map[int]string{
1:"a",
2:"bb",
3:"ccc"
}
fmt.Println(intmap)
}
5.倒敘乘法口訣表
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×5=5 2×5=10 3×5=15 4×5=20 5×5=25
1×4=4 2×4=8 3×4=12 4×4=16
1×3=3 2×3=6 3×3=9
1×2=2 2×2=4
1×1=1