我是Go的完全入门者,我正在尝试将可变参数args作为字符串传递给encodeit
方法,该字符串将对该字符串进行哈希处理,否则传递一个空字符串。我不会打印出哈希字符串。
我尝试了多种方法,但是无法正常工作。
package main
import(
"crypto/sha512"
"encoding/hex"
"fmt"
)
func encodeit(content string) string {
sha_512 := sha512.New()
sha_512.Write([]byte(content))
contentH := sha_512.Sum(nil)
contentHash := hex.EncodeToString([]byte(contentH))
return contentHash
}
func some(payload ...string) {
if len(payload) == 1 {
contentHash := encodeit(payload)
} else {
contentHash := encodeit("")
}
return contentHash
}
func main() {
fmt.Println(some(`{"stockSymbol": "TSLA"}`))
}
这是错误日志
# command-line-arguments
.\stackOverflow.go:19:26: cannot use payload (type []string) as type string in argument to encodeit
.\stackOverflow.go:23:2: too many arguments to return
.\stackOverflow.go:23:9: undefined: contentHash
.\stackOverflow.go:27:18: some("{\"stockSymbol\": \"TSLA\"}") used as value
答案 0 :(得分:1)
payload
成为字符串数组[[string])。可以在循环中使用键值对它进行迭代:
func printEncoded(payload ...string) {
for i, value := range payload {
fmt.Println(i, encode(value))
}
}
使用printEncoded("TSLA","AMD","DOW")
,您将不必创建自己的[]string
数组作为参数([]string{"TSLA","AMD","DOW"}
)。
您还将要看一下JSON软件包进行解析:{"stockSymbol": "TSLA"}
答案 1 :(得分:0)
检查函数的返回值:
func some(payload ...string) string
您错过了返回类型string
。