Go 语法基础
2.17 结构体
// 定义一个用户结构体
type user struct{
name string
password string
}
// 定义一个检查密码是否正确的方法
func(u user) checkPassword(password string) bool{
return u.password==password
}
// 定义一个重置密码的方法
func (u *user) resetPassword(password string){
u.password=password
}
func main() {
// 创建一个用户实例
a:=user{name:"w",password: "1024"}
// 重置密码
a.resetPassword("2048")
// 检查密码是否正确并输出结果
fmt.Println(a.checkPassword("2048"))
}
package main
import (
"errors"
"fmt"
)
//定义用户结构体
type user struct{
name string
password string
}
//查找用户
func findUser(users []user,name string)(v *user,err error){
for _,u:=range users{
if u.name==name{
return &u,nil
}
}
return nil ,errors.New("NOT FOUND")
}
func main() {
//查找用户wang
u,err:=findUser([]user{{"wang","1024"}},"wang")
if err!=nil{
fmt.Println(err)
return
}
fmt.Println(u.name)
//查找用户li
if u,err:=findUser([]user{{"wang","1024"}},"li");err!=nil{
fmt.Println(err)
return
}else {
fmt.Println(u.name)
}
}
2.18 JSON处理
// 导入必要的包
package main
import (
"encoding/json" // 导入json包
"fmt" // 导入fmt包
)
// 定义用户结构体
type user struct {
name string // 用户名
Age int `json:"age"` // 年龄,使用json标签
Password []string // 密码,使用字符串切片
}
// 主函数
func main() {
// 创建用户实例
a := user{name: "12w", Age: 18, Password: []string{"q421"}}
// 将用户实例转换为json格式
buf, err1 := json.Marshal(a)
if err1 != nil {
panic(err1)
}
// 输出json格式的用户实例
fmt.Println(buf)
// 输出json格式的用户实例,转换为字符串格式
fmt.Println(string(buf))
// 将用户实例转换为json格式,并进行格式化
buf, err1 = json.MarshalIndent(a, "", "\t")
if err1 != nil {
panic(err1)
}
// 输出格式化后的json格式的用户实例,转换为字符串格式
fmt.Println(string(buf))
// 将json格式的用户实例转换为用户结构体
var b user
err1=json.Unmarshal(buf,&b)
if err1!=nil{
panic(err1)
}
// 输出转换后的用户结构体
fmt.Printf("%#v",b)
}
2.19 数字解析
strconv是Go语言中的一个标准内置包,它提供了各种函数实现,用于将字符串转换为int, float, boolean等类型。
func ParseT(inputstring string, bitSize int) (精度, error)
package main
import(
"fmt"
"strconv"
)
func main(){
f,_:=strconv.ParseFloat("1.1234",64)//转化为浮点型
//把Float替换为Int则是转化为整型
n,_:=strconv.Atoi("123")//自动转化,反过来Rtoi
}
2.20 进程信息
// 导入必要的包
package main
import(
"fmt" // 格式化输入输出
"os" // 提供了一些与操作系统交互的函数和变量
"os/exec" // 执行外部命令
)
func main(){
fmt.Println(os.Args) // 打印命令行参数
fmt.Println(os.Getenv("PATH")) // 获取环境变量
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)) // 打印命令输出结果
}