这是我参与「第五届青训营」笔记创作活动的第10天
基础语法
数字解析
在Golang里面,关于数字和之间字符串的转换都在strconv包下。我们可以用strconv.ParseFloat()和strconv.ParseInt()来解析字符串。例如strconv.ParseInt(),有三个参数,第一个是字符串,第二个是代表进制(如果是0,表示自动去推测),第三个参数代表64表示访问的是64位精度的整数。我们也可以用strconv.Atoi()来快速把一个十进制字符串转成数字。同样的,我们可以用strconv.Itoa()来把数字转成字符串,在C++中可以用to_string等,用法类似。如果输入不合法的话,这些函数都会返回一个错误。告诉你数值不合法。
package main
import (
"fmt"
"strconv"
)
func main() {
f, _ := strconv.ParseFloat("1.234", 64)
fmt.Println(f) // 1.234
n, _ := strconv.ParseInt("111", 10, 64)
fmt.Println(f) // 111
n, _ := strconv.ParseInt("0x1000", 0, 64)
fmt.Println(n) // 4096
n2, _ := strconv.Atoi("123")
fmt.Println(n2) // 123
n2, err := strconv.Atoi("AAA")
fmt.Println(n2, err) // 0 strconv.Atoi: parsing "AAA": invalid syntax
}
进程信息
Golang下的os/exec包执行外部命令,它将os.StartProcess进行包装使得它更容易映射到stdin/stdout、管道I/O。与C语言或者其他语言中的“系统”库调用不同,os/exec包并不调用系统shell,也不展开任何glob模式,也不处理通常由shell完成的其他扩展、管道或重定向。
下面是Golang里获取进程信息。我们可以用os.Args来获取进程在执行的时候的一些命令行参数。我们可以用os.Getenv()和os.Setenv()分别来获取或者写入环境变量。可以用exec.Command()然后来快速启动子进程并且获取其输入输出。
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
// go run example/20-env/main.go a b c d
fmt.Println(os.Args)
fmt.Println(os.Getenv("PATH")) // /usr/local/go/bin...
fmt.Println(os.Setenv("AA", "BB"))
buf, err := exec.Command("grep", "127.0.0.1", "/etc/hosts").CombinedOutput()
if err != nil {
panic(err)
}
fmt.Println(string(buf)) // 127.0.0.1 localhost
}