golang学习笔记及常见错误处理 长期阶段性更新

1.未知版本号添加进go mod

如:github.com/lxn/walk 无版本号,这样解决
go.mod文件里 使用github上显示的最后一次提交的commit的短编号

require (
    github.com/lxn/walk 5370a7c
)

再使用 go mod tidy 即会自动添加正确的版本号

2.不带cmd窗口打包

go build -ldflags="-H windowsgui" auto.go(要打包的main文件)

3.格式化 将数字转为字符串

fmt.Sprintf("%d,%d", x, y)

4.引用传递

// 引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到原内容数据。
// Go语言中可以借助传指针来实现引用传递的效果。函数参数使用指针参数,传参的时候其实是复制一份指针参数,也就是复制了一份变量地址。
// 取地址符& &data使用指针(内存地址)
// * 号用于指定变量是一个指针

func main() {
    isBreak := false
    test(&isBreak)
    if isBreak {
        fmt.println("break")    
    }
}

func test(isBreak *bool) {
    *isBreak = true
}

5.初始化项目

go mod init PackageName

6.获得百分比

percent := int(float32(2) / float32(3) * 100)

7.时间戳

fmt.Sprintf("%v", time.Now().UnixNano())

8.获取本地ip

var localIp string
func GetIpAddress() {
    conn, err := net.Dial("udp", "8.8.8.8:53")
    if err != nil {
        fmt.Println(err)
        localIp = ""
    }
    localAddr := conn.LocalAddr().(*net.UDPAddr)
    ip := strings.Split(localAddr.String(), ":")[0]
    localIp = ip
}

9.打包不显示窗口并压缩

go build -ldflags="-H windowsgui -w -s"

10.获取cookie,http发送请求时使用cookie

client := http.Client{
    Timeout: time.Duration(time.Second * 5),
}

// 后续请求client会自动将cookie加入
jar, _ := cookiejar.New(nil)
client.Jar = jar

resp, err := client.Get(jsonUrl)
for _, cookie := range resp.Cookies() {
    if cookie.Name == "app" {
        token = cookie.Value
    }
}

11.golang解析json数据


```javascript
var c map[string]interface{}
client := &http.Client{
    Timeout: time.Duration(time.Second * 5),
}
resp, err = client.Get(jsonUrl)
json.Unmarshal(body, &c)
fmt.Println(c)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值