一个游离于山间之上的Java爱好者 | A Java lover living in the mountains
不置可否,Hugo的template同样是使用golang的标准库html/template。为了能实现一个属于自己独特的Hugo theme,或是修改他人的主题,都得对其模板语法有所知晓,方能改的称心如意,亦或是制作出一套即简约,又不失典雅的Hugo theme。
Hugo
template
golang
html/template
Hugo theme
模板语法
在 Go 1.11以前使用包管理一直被开发者所诟病。既然GOPATH这种包管理引起了一线开发者的一片骂声,所以,Go官方体恤一线开发者对GOPATH这种包管理的情绪,一直致力努力提供对一线开发者友好的包管理解决方法而奋斗。从最初的GOPATH到
Go 1.11
GOPATH
Go
Go语言的包借助了目录树的组织形式,一般包的名称就是其源文件所在目录的名称,虽然Go语言没有强制要求包名必须和其所在的目录名同名,但还是建议包名和所在目录同名,这样结构更清晰。
除了上面的 errors.New 用法之外,我们还可以实现 error 接口自定义一个 Error() 方法,来返回自定义的错误信息。
无缓冲信道 Channel 是无法保存任何值的,该类型信道要求 发送 goroutine 和 接受 goroutine 两者同时准备好,这样才能完成发送与接受的操作。
通过上篇文章,我们知道该怎么声明信道 Channel,以及发送和读取数据。然而本文要讲的是单向Channel,可单向信道Channel到底是怎样的呢?
单向Channel
Channel 是进程内的通信方式,因此通过 channel 传递对象的过程和调用函数时的参数传递行为比较一致,比如也可以传递指针等。如果需要跨进程通信,我们建议用分布式系统的方法来解决,比如使用 Socket 或者 HTTP 等通信协议。Go 语言对于网络方面也有非常完善的支持。
并发与并行并不相同,并发主要由切换时间片来实现“同时”运行,并行则是直接利用多核实现多线程的运行,Go程序可以设置使用核心数,以发挥多核计算机的能力。
所谓空接口就是没有方法集,以至于任何类型都可实现它,换言之,也就是空接口可以保存任意类型的值。
如果Type是具体某个类型,类型断言会检查 varl的动态类型是否等于具体类型 Type。如果检查成功,类型断言返回的结果是 varl 的动态值,其类型是 Type。 - 如果 Type 是接口类型,类型断言会检查 varl 的动态类型是否满足
Type
varl
要想实现Go中的接口,类型实现接口方法集的方法,其类型实现的方法签名必须要与接口中的方法集中方法签名一样。 类型不需要显式声明它实现了某个接口:接口被隐式地实现。多个类型可以实现同一个接口。
Go中的方法是一种特殊的函数,以实现类型与函数进行绑定
Go中的结构体与c/c++语言中是差不多,然而对没有接触过c/c++语言的话,对在看到结构体这一复合类型是新鲜事物。
c/c++
复合类型
函数作为另一个函数的形参,这就是Go当中的回调函数。