上一章:Chapter013 golang接口
下一章:Chapter015 golang单元测试
官方文档 :https://studygolang.com/pkgdoc os包
本章纲要
一、文件操作(非本篇重点,后面具体使用到再补充)
1、说明
os包里面File,前五个函数是没有和File绑定的
二、命令行参数
1、os.Args
(1)说明
os.Args 是一个string的切片,用来储存所有的命令行参数
(2)举例说明
package main
import (
"fmt"
_ "fmt"
"os"
)
func main(){
fmt.Println("命令行参数有",len(os.Args))
for i,v:= range os.Args {
fmt.Printf("args[%v] = %v\n",i,v)
}
}
2、flag包解析命令行参数
(1)说明
package main
import (
"flag"
"fmt"
_ "fmt"
)
func main() {
//用于接收命令行参数值
var user string
var pwd string
var host string
var port int
//用来接收命令行中用户输入的 -u 后面的参数
flag.StringVar(&user,"u","","用户名默认为空")
flag.StringVar(&pwd,"pwd","","用户名默认为空")
flag.StringVar(&host,"h","localhost","用户名默认为空")
flag.IntVar(&port,"port",3306,"用户名默认为空")
//转换 必须调用该方法
flag.Parse()
//输出结果
fmt.Printf("user=% pwd=%v port=%v",user,pwd,port)
}
三、Json
1、在线解析验证Json
2、Json序列化
引包
import "encoding/json"
使用
data, err := json.Marshal(......)
3、Json序列化 tag
给返回的序列化后的json按照自定义的名字返回
type Monster struct{
Name string `json:monster_name` //这里序列化结构体后,其key就变成monster_name
Age int 'json:monster_age'
}
4、Json反序列化
(1)说明
(2)反序列化时必须要有原来的标准,比如结构体就要有原来的结构体申明
(3)在反序列化一个json字符串时,要确保反序列化是和原来的数据类型一致
(4)综合代码:
package main
import (
"encoding/json"
"fmt"
)
type Monster struct{
Name string `json:"monster_name"` //这里序列化结构体后,其key就变成monster_name
Age int `json:"monster_age"`
}
func testStruct() string {
monster := Monster{"牛魔王",500}
data ,err :=json.Marshal(&monster)
if err != nil{
fmt.Printf("序列化失败原因:%v",err)
}
return string(data)
}
func backJson(str string, monster *Monster) {
err := json.Unmarshal([]byte(str),&monster)
if err != nil{
fmt.Printf("反序列化失败原因%v",err)
}
}
func main(){
var monster Monster
jsonData := testStruct()
fmt.Println(jsonData)
backJson(jsonData,&monster)
fmt.Println(monster)
}