Go-核心设计-写接口传输的参数实体类型和指针类型/ Switch(fallthrough)的那些事

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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值