go - 是否可以将嵌入文件显示为文件名?
问题描述
我使用一个需要文件名作为参数(类型)的函数。提供文件名时它工作正常。string
我想将此文件嵌入到我的二进制文件中。然后我可以将内容设置为[]byte
or string
,但这没有用。我也可以喜欢它,embed.FS
但我的理解是,这是一个只能由某些函数使用的抽象。
我需要的是能够将此嵌入文件呈现为文件名(a string
),然后底层函数将使用该文件名来打开(嵌入)文件。
这可能吗?
解决方案
Key 接受作为字符串参数的文件名只是 ioutil.ReadFile 上的抽象,请参阅auth.go
你可以做的是自己实现 ssh.Auth,这里是一个小例子。
package main
import (
_ "embed"
"fmt"
"github.com/melbahja/goph"
"golang.org/x/crypto/ssh"
)
//go:embed id_rsa
var privateKey []byte
func main() {
auth, err := Auth(privateKey, []byte("foobar"))
fmt.Println(auth, err)
}
func Auth(privateKey, pass []byte) (goph.Auth, error) {
signer, err := Singer(privateKey, pass)
if err != nil {
return nil, err
}
return goph.Auth{
ssh.PublicKeys(signer),
}, nil
}
func Singer(privateKey, pass []byte) (ssh.Signer, error) {
if len(pass) != 0 {
return ssh.ParsePrivateKeyWithPassphrase(privateKey, pass)
}
return ssh.ParsePrivateKey(privateKey)
}
推荐阅读
- python - '_io.BufferedReader' 对象不可下标
- python - python中的细粒度环境控制
- validation - F# - 嵌套类型
- cmake - CMake TARGET_RUNTIME_DLLS 为空
- java - TypeError: build_db_query_app7() 采用 0 个位置参数,但给出了 1 个
- python - 以数字方式从 f(x) 和 g(x) 中找到 f(g)
- java - Google Play 结算
- mysql - 如何使用 Spring Data JPA 对日期执行聚合操作?
- terminal - 执行 .command 文件后如何不关闭终端?
- reactjs - 反应警告:函数作为带有 forwardRef 的 React 子项无效