Golang入门指南


  • 首页

  • todo

  • 思考

  • life

  • food

  • OS

  • lua

  • redis

  • Golang

  • C

  • TCP/IP

  • ebpf

  • p4

  • OpenVPN

  • IPSec

  • L2TP

  • DNS

  • distributed

  • web

  • OpenWRT

  • 运维

  • Git

  • 鸟哥的私房菜

  • IT杂谈

  • 投资

  • About Me

  • 友情链接

  • FTP

  • 搜索
close

go post请求常用的几种方式

时间: 2021-04-03   |   分类: go     |   阅读: 144 字 ~1分钟

原文链接

post请求常用的几种方式,记录一下

func httpPost() {
    resp, err := http.Post("https://www.abcd123.top/api/v1/login",
        "application/x-www-form-urlencoded",
        strings.NewReader("username=test&password=ab123123"))
    if err != nil {
        fmt.Println(err)
    }
 
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        // handle error
    }
 
    fmt.Println(string(body))
}
 
func httpPostForm() {
    resp, err := http.PostForm("https://www.denlery.top/api/v1/login",
        url.Values{"username": {"auto"}, "password": {"auto123123"}})
    if err != nil {
        // handle error
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        // handle error
    }
    fmt.Println(string(body))
 
}
 
func httpPostJson() {
    jsonStr :=[]byte(`{ "username": "auto", "password": "auto123123" }`)
    url:= "https://www.denlery.top/api/v1/login"
    req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
    req.Header.Set("Content-Type", "application/json")
 
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        // handle error
    }
    defer resp.Body.Close()
 
    statuscode := resp.StatusCode
    hea := resp.Header
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
    fmt.Println(statuscode)
    fmt.Println(hea)
 
}

go中的init函数以及main函数

时间: 2021-04-03   |   分类: go     |   阅读: 923 字 ~2分钟

原文链接

首先我们看一个例子:init函数:

init 函数可在package main中,可在其他package中,可在同一个package中出现多次。

main函数

阅读全文 »

go 语言中关于包导入必学的8个知识点

时间: 2021-04-03   |   分类: go     |   阅读: 2367 字 ~5分钟

Hi,大家好,我是明哥。

在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。

阅读全文 »

go struct详解

时间: 2021-04-03   |   分类: go     |   阅读: 3754 字 ~8分钟

Go Struct超详细讲解 原创作者,程序员读书

Go语言中提供了对struct的支持,struct,中文翻译称为结构体,与数组一样,属于复合类型,并非引用类型。

阅读全文 »

Golang 中的垃圾回收(三)

时间: 2021-04-04   |   分类: go   go内存详解     |   阅读: 3794 字 ~8分钟

原文链接 通过前两节的说明,我们得出这样一个结论:如果降低堆内存的分配压力就会相应的减少延迟,从而提升程序性能。这一节来讲一下,给一种类型的工作负载,GC的pacing算法是怎么来确定最佳回收速率的。 并发代码实例 本节给出的代码在这里可以找到: github.com/ardanlabs/g… 程序是做了这样一件事情,给一个特定topic,要确定它在文档集中出现的频率。程序包含了不用版本的寻找算法,它们使用了不同的并发模式。这里我们只看freq,freqConcurrent和freqNumCPU这三种版本的算法。 首先看freq,它是非并发顺序执行的程序版本,代码如下。 L1

阅读全文 »

Golang 中的垃圾回收(二)

时间: 2021-04-03   |   分类: go   go内存详解     |   阅读: 3485 字 ~7分钟

原文链接 第一部分,我花了时间去描述了golang 垃圾收集器的行为,并说明了程序运行时候收集器所产生的延迟。我分享了怎么样去产生以及去解释GC traces。并展示了堆内内存如何改变,并且解释了GC不同阶段对延迟代价的影响。 最后的结论是,如果你减少了堆的压力,你就会减少延迟代价并提高了程序性能。我也指出了,降低收集速率,推迟收集,设法增加两次收集的时间间隔并不是很好的策略。即使是收集速率很快,但是以一致的速度进行,也能保持程序以最佳性能运行。 这部分里,我会带你通过一个实际的web应用并向你展示怎么样生成GC traces和程序状态。然后我会解释这些工具的输出内容,这样你可以找到方法去提高应用程序的性能。 运行应用 看一下go training的web应用程序 图1.1 github.com/ardanlabs/g… 图一是应用程序的样子。这个程序从不同的地方下载三个rss 订阅集合,并且允许用户去进行搜索。build之后,启动程序 L1

阅读全文 »

go语言panic,recover的实现

时间: 2021-04-03   |   分类: go     |   阅读: 6811 字 ~14分钟

原创 爱写程序的阿波张 源码游记 2019-07-02

本文主要分析Go语言的panic/recover在AMD64 Linux平台下的实现,包括:

主动调用 panic() 函数所引发的panic的处理流程,比如go代码中直接调用panic()函数或编译器插入的对panic()的调用;

阅读全文 »

go深入理解defer(下)defer实现机制

时间: 2021-04-03   |   分类: go     |   阅读: 6131 字 ~13分钟

原创 爱写程序的阿波张 源码游记 2019-06-17

上一篇文章我们主要从使用的角度介绍了 defer 的基础知识,本文我们来分析一下 defer 的实现机制。

还是从一个例子程序开始。

package main
 
import "fmt"
 
func sum(a, b int) {
    c := a + b
    fmt.Println("sum:" , c)
}
 
func f(a, b int) {
    defer sum(a, b)
 
    fmt.Printf("a: %d, b: %d\n", a, b)
}
 
func main() {
    a, b := 1, 2
    f(a, b)
}

从前一篇文章我们得知,编译器会把 defer 语句翻译成对 deferproc 函数的调用,同时,编译器也会在使用了 defer 语句的 go 函数的末尾插入对 deferreturn 函数的调用,下面我们来看一下这两个函数的实现代码。

阅读全文 »
80 81 82 83 84 85 86 87 88

日志
分类
标签
RSS 订阅
GitHub
© 2009 - 2025
粤ICP备2021068940号-1 粤公网安备44011302003059
0%