小编kbi*_*nce的帖子

在go程序退出后,在shell上保留env变量的值集

有没有办法我可以在我的shell上设置一个环境变量,并在go程序退出后保持它?我尝试了以下内容

bash-3.2$ export WHAT=am
bash-3.2$ echo $WHAT
am

bash-3.2$ go build tt.go 
bash-3.2$ ./tt
am
is your name
bash-3.2$ echo $WHAT
am
bash-3.2$ 
Run Code Online (Sandbox Code Playgroud)

代码是:

package main`
import (
        "fmt"
       "os"`
)

func main() {
fmt.Println(os.Getenv("WHAT"))
os.Setenv("WHAT", "is your name")
fmt.Println(os.Getenv("WHAT"))
}
Run Code Online (Sandbox Code Playgroud)

谢谢

go

4
推荐指数
1
解决办法
1738
查看次数

使用bytes.Buffer与使用*bytes.NewBuffer时json.Unmarshal的区别

我在查看bytes包.如果我使用bytes.Buffer定义一个缓冲区,那么下面的代码工作,我得到一个输出.但是,如果我尝试创建具有一定容量的缓冲区,然后尝试相同的代码,则会失败,并显示错误错误:无效字符'\ x00'正在查找值的开头.不知道如何解决它.

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
)

func main() {
    var jsonBlob = []byte(`[
        {"Name": "Platypus", "Order": "Monotremata"},
            {"Name": "Quoll",    "Order": "Dasyuromorphia"}
            ]`)

    //var b bytes.Buffer
    b := *bytes.NewBuffer(make([]byte, 20))
    b.Write(jsonBlob)

    fmt.Println(b.String())

    var dat interface{}
    err := json.Unmarshal(b.Bytes(), &dat)
    if err != nil {
        fmt.Println("error:", err)
    }   
    fmt.Printf("%+v", dat)
}
Run Code Online (Sandbox Code Playgroud)

使用bytes.Buffer输出Run

[
        {"Name": "Platypus", "Order": "Monotremata"},
        {"Name": "Quoll",    "Order": "Dasyuromorphia"}
    ]
[map[Name:Platypus Order:Monotremata] map[Name:Quoll Order:Dasyuromorphia]]
Program exited.
Run Code Online (Sandbox Code Playgroud)

使用bytes.NewBuffer运行输出

[
        {"Name": "Platypus", "Order": "Monotremata"},
        {"Name": "Quoll",    "Order": "Dasyuromorphia"} …
Run Code Online (Sandbox Code Playgroud)

go

4
推荐指数
1
解决办法
2290
查看次数

我可以将字符串作为bufio.ReadString()的分隔符吗?

我有一个包含多行查询的文件。我想一一阅读并打印。就像是 :

临时SQL

select * from table1;  
select *  
from table2;

select 1; 
Run Code Online (Sandbox Code Playgroud)

由于我可以进行多行查询,因此我想使用; \ n作为分隔符。那可能吗 ?有没有更好的方法可以代替bufio.ReadString

go

0
推荐指数
1
解决办法
2489
查看次数

标签 统计

go ×3