1. Go 写接口传输的参数实体类型和指针类型、
(1)传输实体类型(结论:传输的是一种变量,是一种赋值拷贝,接口内修改实体本身,外部调用的时候是不会修改,还是初始化的值)
type U struct {
name string
age int
}
func (u U)Hello(){
u.name="Tom2"
}
测试:
func Test1(test *testing.T) {
u:=U{
name: "Tom",
age: 20,
}
u.Hello()
fmt.Println("测试go接口:",u.name)
}
结果:
=== RUN Test1
测试go接口: Tom
--- PASS: Test1 (0.00s)
(2)传输指针类型 (结论: 传输的是指针所以最终传输的实体始终是一个地址,修改后,外部调用的时候也可以使用)
type U struct {
name string
age int
}
func (u *U)Hello(){
u.name="Tom2"
}
测试:
func Test1(test *testing.T) {
u:=U{
name: "Tom",
age: 20,
}
u.Hello()
fmt.Println("测试go接口:",u.name)
}
结果:
=== RUN Test1
测试go接口: Tom2
--- PASS: Test1 (0.00s)
2. Switch(fallthrough)的那些事
(1) 首先就是switch中默认每个分支都会直接的进行Break跳转,所以可以添加也可以不添加break
func Test2(test *testing.T){
name:= "A"
switch name {
case "A":
fmt.Println("A")
case "b":
fmt.Println("B")
default:
fmt.Println("C")
}
}
结果:
=== RUN Test2
A
--- PASS: Test2 (0.00s)
(2)fallthrough使用的效果(强制进行后面的跳转)
func Test2(test *testing.T){
name:= "A"
switch name {
case "A":
fmt.Println("A")
fallthrough
case "b":
fmt.Println("B")
fallthrough
default:
fmt.Println("C")
}
}
结果:
=== RUN Test2
A
B
C
--- PASS: Test2 (0.00s)