栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Golang八股文(-1)小知识点收集

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang八股文(-1)小知识点收集

最后更新于2022年4月29日 13:31:19

有时候看到一些小的知识点,放在这篇博客里了

golang errgroup的用法及用处

Go编译缓存导致C文件修改后未重新编译 劳资服了,人才

CGO调用C语言的链接库,不但要写进#cgo LDFLAGS:里面,还要在环境变量的LD_LIBRARY_PATH这一项添加。

转义符
type user struct {
    name string
}

func main() {
    u := user{"tang"}
    //Printf 格式化输出
    fmt.Printf("% + vn", u)     //格式化输出结构
    fmt.Printf("%#vn", u)       //输出值的 Go 语言表示方法
    fmt.Printf("%Tn", u)        //输出值的类型的 Go 语言表示
    fmt.Printf("%tn", true)     //输出值的 true 或 false
    fmt.Printf("%bn", 1024)     //二进制表示
    fmt.Printf("%cn", 11111111) //数值对应的 Unicode 编码字符
    fmt.Printf("%dn", 10)       //十进制表示
    fmt.Printf("%on", 8)        //八进制表示
    fmt.Printf("%qn", 22)       //转化为十六进制并附上单引号
    fmt.Printf("%xn", 1223)     //十六进制表示,用a-f表示
    fmt.Printf("%Xn", 1223)     //十六进制表示,用A-F表示
    fmt.Printf("%Un", 1233)     //Unicode表示
    fmt.Printf("%bn", 12.34)    //无小数部分,两位指数的科学计数法6946802425218990p-49
    fmt.Printf("%en", 12.345)   //科学计数法,e表示
    fmt.Printf("%En", 12.34455) //科学计数法,E表示
    fmt.Printf("%fn", 12.3456)  //有小数部分,无指数部分
    fmt.Printf("%gn", 12.3456)  //根据实际情况采用%e或%f输出
    fmt.Printf("%Gn", 12.3456)  //根据实际情况采用%E或%f输出
    fmt.Printf("%sn", "wqdew")  //直接输出字符串或者[]byte
    fmt.Printf("%qn", "dedede") //双引号括起来的字符串
    fmt.Printf("%xn", "abczxc") //每个字节用两字节十六进制表示,a-f表示
    fmt.Printf("%Xn", "asdzxc") //每个字节用两字节十六进制表示,A-F表示
    fmt.Printf("%pn", 0x123)    //0x开头的十六进制数表示

2021年9月9日 17:12:50:
[典藏版] Golang 调度器 GMP 原理与调度全分析
An overview of memory management in Go
Garbage Collection In Go : Part I - Semantics

2021年9月13日 14:33:21:
22. 图解:Go语言中的静态类型与动态类型
获取接口值的动态类型的方法是使用%T:

var w io.Writer
fmt.Printf("%Tn", w)

2021年9月29日 11:27:48:

2022年4月29日 13:31:25:
(七)golang–变量之基本数据类型(看这篇就够了)

写方法的时候,对象是否用指针传递

《Go语言编程》是这么写的:

Go语言中的面向对象最为直观,也无需支付额外的成本。如果要求对象必须以指针传递,这有时会是个额外成本,因为对象有时很小(比如4字节),用指针传递并不划算。
只有在你需要修改对象的时候,才必须用指针。它不是Go语言的约束,而是一种自然约束。举个例子:

func (a *Integer) Add(b Integer) {
	*a += b
}

这里为Integer类型增加了Add()方法。由于Add()方法需要修改对象的值,所以需要用指针引用。调用如下:

func main() {
	var a Integer = 1
	a.Add(2)
	fmt.Println("a =", a)
}

运行该程序,得到的结果是:a=3。如果你实现成员方法时传入的不是指针而是值(即传入Integer,而非*Integer),如下所示:

func (a Integer) Add(b Integer) {
	a += b
}

那么运行程序得到的结果是a=1,也就是维持原来的值。读者可以亲自动手尝试一下。
究其原因,是因为Go语言和C语言一样,类型都是基于值传递的。要想修改变量的值,只能传递指针。

golang之HashMap
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/944987.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号