Go 语法基础打卡标题 | 青训营

74 阅读2分钟

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)) // 打印命令输出结果
}