网站首页 > 精选文章 正文
在golang函数中使用可选参数,golang常规是没有默认参数的,不像PHP可以在方法中写默认参数,操作中可以在方法里不传参。现在将在golang的函数使用可选参数,即可以选择传不传参,下面JWT作为例子,只取JWT部分来讲述。
这是JWT生成token部分
// 可选参数
type Options struct {
SecretKey string
}
// 产生token的函数
func (j *jwtSecret) GenerateToken(args map[string]interface{}, options ...Options) (string, error) {
if !utils.IsEmpty(options) {
j.secretKey = []byte(options[0].SecretKey)
}
nowTime := time.Now()
// 过期时间
expireTime := nowTime.Add(60 * time.Hour).Unix()
claims := Claims{
args,
jwt.StandardClaims{
Audience: "job",
ExpiresAt: expireTime,
Id: uuid.New().String(),
IssuedAt: nowTime.Unix(),
Issuer: "gin-job",
NotBefore: nowTime.Unix(),
Subject: "token",
},
}
tokenClaims := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
token, err := tokenClaims.SignedString(j.secretKey)
return token, err
}
这里是调用函数部分,没有传第二参数
args := map[string]interface{}{
"id": "1",
"name": "user",
}
token, _ := engine.NewJWT().GenerateToken(args)
fmt.Println("生成的token:", token)
这里是调用函数部分,传了第二参数
options := engine.Options{
SecretKey: "SecretKey123",
}
args := map[string]interface{}{
"id": "1",
"name": "user",
}
token, _ := engine.NewJWT().GenerateToken(args, options)
fmt.Println("生成的token:", token)
以上是调用JWT部分,具体了解可以在GitHub里查找"dgrijalva/jwt-go"文档。
- 上一篇: AlpineLinux安装部署php8
- 下一篇: 嘿嘿,你可能不知道PHP如何创建数组
猜你喜欢
- 2024-12-24 使用OpenLDAP集中式认证
- 2024-12-24 Java开发岗面试宝典:分布式相关问答详解
- 2024-12-24 Mongodb 从入门到精通
- 2024-12-24 基于一次ContentDownload变慢而进行的网站性能优化
- 2024-12-24 REST API 安全设计指南
- 2024-12-24 Sqids:根据数字生成简短的唯一ID
- 2024-12-24 Ansible最佳实践之 AWX 使用 Ansible 与 API 通信
- 2024-12-24 各编程语言相互调用示例,代码简单,生成的软件体积也很小
- 2024-12-24 加锁了还有并发问题?Redis分布式锁,真的用对了?
- 2024-12-24 后端低代码方案 - 伪代码方案分析
- 06-30线上问题之:RocketMq重复消费(rocketmq同一消费组的消费者会重复消费么)
- 06-30掐指一算,是期末成绩出来了(掐指一算下句)
- 06-30智能家居第一步(智能家居第一步是什么)
- 06-30使用VPN会蓝屏吗?
- 06-30这次不错过! 九龙湖游泳馆新学期试运行
- 06-30深信服EC客户端升级,IOS9系统支持L3VPN!
- 06-30西雅特Alhambra MPV 可选五种动力阵容
- 06-30你可能没意识到,选好服务器虚拟化是多重要
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)