后端开发总结(2):go语言的知识点

1 append 列表

append() 切片需要增加 ...

var a []inta = append(a, 1) // 追加1个元素
a = append(a, 1, 2, 3) // 追加多个元素
a = append(a, []int{1,2,3}...) // 追加切片,

2 如何打印指针结构体的值

为结构体实现 String() 方法

type DataAndDetail struct {
   Data       *entity.Data
   DataDetail *entity.DataDetail
}

func (t *DataAndDetail) String() string {
   return fmt.Sprintf("{Data:%v,DataDetail:%v}", t.Data, t.DataDetail)
}

# test:
DataAggregate := &aggre.DataAndDetail{
    Data:       data,
    DataDetail: detail,
}
fmt.Printf("aggre:%v", DataAggregate)

结果类似:

在这里插入图片描述

3 * 和 & 的用法

*是取出地址中的值,*string 则代表指针类型的 , & 表示变量对应的地址

  • &entity.State,表示创建一个结构体,并把地址取出,相当于结构体指针
  • 参数类型是 * 的指针类型,那么在传递值的时候就需要传递 &
// 定义参数指针类型
func AddState(c *gin.Context, options *entity.AddStateOptions) {}

// 使用的时候就需要传递 &这种类型 
state.AddState(c, &req.AddStateOptions)

new 创建和 &State 结构体创建的区别,最好不用new,直接用指针方法

a:=new(user) // 创建的是对象指针
b:=&user{}   // 创建的是指针类型
c:=user{}    // 创建的是对象本身
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值