php获取js函数返回的值_Go 函数

概述

学习了一些基础语法,开始学习写函数了,分享几个自己写的函数。

  • MD5

  • 获取当前时间戳

  • 获取当前时间字符串

  • 生成签名

函数定义

func function_name(input1 type1, input2 type2) (type1, type2) {

// 函数体

// 返回多个值

return value1, value2

}

  • 函数用 func 声明。

  • 函数可以有一个或多个参数,需要有参数类型,用 , 分割。

  • 函数可以有一个或多个返回值,需要有返回值类型,用 , 分割。

  • 函数的参数是可选的,返回值也是可选的。

值传递

传递参数时,将参数复制一份传递到函数中,对参数进行调整后,不影响参数值。

Go 语言默认是值传递。

引用传递

传递参数时,将参数的地址传递到函数中,对参数进行调整后,影响参数值。

这个是 Go - Struct 结构体的例子:

//demo_13.go

package main

import (

"encoding/json"

"fmt"

)

type Result struct {

Code int `json:"code"`

Message string `json:"msg"`

}

func main() {

var res Result

res.Code = 200

res.Message = "success"

toJson(&res)

setData(&res)

toJson(&res)

}

func setData (res *Result) {

res.Code = 500

res.Message = "fail"

}

func toJson (res *Result) {

jsons, errs := json.Marshal(res)

if errs != nil {

fmt.Println("json marshal error:", errs)

}

fmt.Println("json data :", string(jsons))

}

运行结果:

796e3b63f9be7d02eaf6178f1197d722.png

MD5

// MD5 方法

func MD5(str string) string {

s := md5.New()

s.Write([]byte(str))

return hex.EncodeToString(s.Sum(nil))

}

str := "12345"

fmt.Printf("MD5(%s): %s\n", str, MD5(str))

运行结果:

91be7c73f9acc1aaebab2f4f8e43b30e.png

获取当前时间字符串

// xxxx-xx-xx xx:xx:xx

func getTimeStr() string {

return time.Now().Format("2006-01-02 15:04:05")

}

fmt.Printf("current time str : %s\n", getTimeStr())

运行结果:

20cb36ca9d2a6acceebfce0c32bf7168.png

获取当前时间戳

// 获取当前时间戳

func getTimeInt() int64 {

return time.Now().Unix()

}

fmt.Printf("current time str : %s\n", getTimeStr())

fmt.Printf("current time unix : %d\n", getTimeInt())

运行结果:

e8cd0307cd7753d2c63ce03175800326.png

生成签名

//demo_26.go

package main

import (

"crypto/md5"

"encoding/hex"

"fmt"

"sort"

)

func main() {

params := map[string]interface{} {

"name" : "Tom",

"pwd" : "123456",

"age" : 30,

}

fmt.Printf("sign : %s\n", createSign(params))

}

// MD5 方法

func MD5(str string) string {

s := md5.New()

s.Write([]byte(str))

return hex.EncodeToString(s.Sum(nil))

}

// 生成签名

func createSign(params map[string]interface{}) string {

var key []string

var str = ""

for k := range params {

key = append(key, k)

}

sort.Strings(key)

for i := 0; i < len(key); i++ {

if i == 0 {

str = fmt.Sprintf("%v=%v", key[i], params[key[i]])

} else {

str = str + fmt.Sprintf("&xl_%v=%v", key[i], params[key[i]])

}

}

// 自定义密钥

var secret = "123456789"

// 自定义签名算法

sign := MD5(MD5(str) + MD5(secret))

return sign

}

运行结果:

280cc25019ea35ea348b1e4a8858ec0f.png

对应 PHP 生成签名方法:

9b0bb328f3bd1b9d9d8c7068bf9b8902.png

有兴趣的可以在签名方法中,增加时间戳 和 secret 在配置文件中读取。

推荐阅读

  • Go - 循环

  • Go - Map 集合

  • Go - Struct 结构体

  • Go - Slice 切片

  • Go - 数组

  • Go - 变量声明

  • Go - 环境安装

本文欢迎转发,转发请注明作者和出处,谢谢!

cbc06a85884e2bc274605b73235bd3ae.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值