后端开发总结(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{
    
    }    // 创建的是对象本身

猜你喜欢

转载自blog.csdn.net/qq_42647903/article/details/127612497
今日推荐