Go - 函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Go - 函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2910字,纯文字阅读大概需要5分钟。
内容图文
概述
学习了一些基础语法,开始学习写函数了,分享几个自己写的函数。
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)) }
运行结果:
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))
运行结果:
获取当前时间字符串
// 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())
运行结果:
获取当前时间戳
// 获取当前时间戳 func getTimeInt() int64 { return time.Now().Unix() } fmt.Printf("current time str : %s\n", getTimeStr()) fmt.Printf("current time unix : %d\n", getTimeInt())
运行结果:
生成签名
//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 }
运行结果:
对应 PHP 生成签名方法:
有兴趣的可以在签名方法中,增加时间戳 和 secret 在配置文件中读取。
内容总结
以上是互联网集市为您收集整理的Go - 函数全部内容,希望文章能够帮你解决Go - 函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。