golang 命令行参数 -x --y
时间: 2023-08-18 11:33:34 浏览: 95
可以使用 `flag` 包来解析命令行参数,其中 `-x` 可以使用 `flag.BoolVar()` 方法来解析, `--y` 可以使用 `flag.StringVar()` 方法来解析。示例代码如下:
```go
package main
import (
"flag"
"fmt"
)
func main() {
var x bool
var y string
flag.BoolVar(&x, "x", false, "usage of x")
flag.StringVar(&y, "y", "", "usage of y")
flag.Parse()
fmt.Println("x:", x)
fmt.Println("y:", y)
}
```
在命令行中执行 `go run main.go -x --y=value`,输出结果如下:
```
x: true
y: value
```
相关问题
golang 命令行参数,形式 -R, --recursive=false
可以使用 `flag` 包来解析命令行参数,其中 `-R` 可以使用 `flag.BoolVar()` 方法来解析, `--recursive=false` 可以使用 `flag.Bool()` 方法来解析。示例代码如下:
```go
package main
import (
"flag"
"fmt"
)
func main() {
var recursive bool
flag.BoolVar(&recursive, "R", false, "usage of R")
flag.Bool("recursive", false, "usage of recursive")
flag.Parse()
fmt.Println("R:", recursive)
fmt.Println("recursive:", flag.Lookup("recursive").Value)
}
```
在命令行中执行 `go run main.go -R --recursive=true`,输出结果如下:
```
R: true
recursive: true
```
需要注意的是,如果 `--recursive=true` 中的 `=` 后面没有值,则会解析成 `true`。如果想要指定为 `false`,则可以使用 `--recursive=false`。同时,`--recursive` 可以通过 `flag.Lookup()` 方法获取到 `flag.Flag` 类型的值,从而获取到其默认值。
golang 实现aes-128-gcm
golang 提供了标准库 crypto/aes 来实现 AES 加密算法,同时也支持 gcm 模式。要实现 AES-128-GCM 加密,首先需要生成一个 128 位的密钥,并且创建一个 AES 实例来进行加密操作。接着还需要创建一个 gcm 实例来进行 gcm 模式的加密。
首先,可以使用 crypto/rand 包生成一个随机的 128 位密钥,代码如下:
```
key := make([]byte, 16)
if _, err := rand.Read(key); err != nil {
panic(err.Error())
}
```
随后,可以使用 aes.NewCipher() 来创建一个 AES 实例,代码如下:
```
block, err := aes.NewCipher(key)
if err != nil {
panic(err.Error())
}
```
然后,可以使用 cipher.NewGCM() 来创建一个 gcm 实例,代码如下:
```
gcm, err := cipher.NewGCM(block)
if err != nil {
panic(err.Error())
}
```
最后,可以使用 gcm.Seal() 方法来进行 AES-128-GCM 加密操作,代码如下:
```
nonce := make([]byte, gcm.NonceSize())
if _, err = io.ReadFull(rand.Reader, nonce); err != nil {
panic(err.Error())
}
ciphertext := gcm.Seal(nonce, nonce, plaintext, nil)
```
通过上面的步骤,就可以在 golang 中实现 AES-128-GCM 加密了。需要注意的是,在实际使用时,还需要对密钥进行妥善管理,以及对加密结果进行适当的存储和传输。