本文记录利用golang调用exe文件。
需要用到包os/exec,本文重点介绍如何利用golang执行带参数的可执行文件以及踩过的坑。首先c:=exec.Command(cmd)
语句不会执行cmd命令,而是做好要执行的准备,当接下来调用c.Run()
时才会执行cmd命令,注意到此时是会阻塞进程的,等待执行完成才会进行下一步。与c.Output()
类似,但是Output()可以获取返回值,如果不想阻塞进程可以用c.Start()
函数,之后用c.Wait()
等待执行完毕也可以。
接下来就是需要注意如何执行带输入参数的exe文件,直接将整个命令作为字符串输入是不可行的!!!比如draco_encode.exe需要两个参数-o outfile -i inputfile,正确的输入格式应该是c:=exec.Command(draco_encode.exe,"-i",inputfile,"-o","outfile")
两个file均为字符串格式,即可正确执行。
第二部分为map相关,我们都知道再golang中map是一个很强大的键值对操作,格式为map_key:=make(map[key]value)
,就可以利用key搜索value了,我们的value可以设置为一个结构体,比如
type person struct {
height int
weight int
}
我们常用的操作比如记录一个班所有人的信息class:=make(map[int]person)
,那么必然会涉及到更新一个人的height,此时我们使用指针操作
func (*p person)record_h(h int){
p.height=h}
那么此时我们的map就不能是[int]person了,最好设置为[int]*person,这样我们之后的更新即可直接调用class.record_h[172]进行。当然读者还可以试试能不能获取特定键值所对应的value的地址,这样也可以转为指针,就又可以用[int]person了
另外还遇到了要判断map中的键值是否存在这种问题,比如班级中是否有张三,这时候直接调用class["张三"]看看是不是空就行了。map内容还有很多,后续有时间再整理
标签:map,int,调用函数,golang,person,value,执行 From: https://www.cnblogs.com/wxL-videostreaming/p/18244863