# 结构体知识小问题
* * * * *
--: 作者: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