gpt4 book ai didi

go - 如何在 Golang 中正确使用可变参数?

转载 作者:数据小太阳 更新时间:2023-10-29 03:44:10 26 4
gpt4 key购买 nike

我是 Go 的完全初学者,我正在尝试将可变参数作为字符串传递给 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

最佳答案

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"}

Fixed Playground

关于go - 如何在 Golang 中正确使用可变参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56572366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com