这样写是什么意思?
type Encrypt struct{}
func (*Encrypt) EncodeMd5(buf []byte) string {
hash := md5.New()
hash.Write(buf)
return hex.EncodeToString(hash.Sum(nil))
}
函数EncodeMd5前面加(*Encrypt)
有什么作用呢?
我知道type Encrypt struct{}
是定义一个结构体。
这样写是什么意思?
type Encrypt struct{}
func (*Encrypt) EncodeMd5(buf []byte) string {
hash := md5.New()
hash.Write(buf)
return hex.EncodeToString(hash.Sum(nil))
}
函数EncodeMd5前面加(*Encrypt)
有什么作用呢?
我知道type Encrypt struct{}
是定义一个结构体。
你好,GO 是类C语言,也就是面向过程语言。见此。
以C语言为例,它是没有类这种概念的,只有结构体。
在C中,编写一个结构体的方法,我们通常采用以下写法:
void func(s *Student,id int){
...
}
把第一个参数做为该方法的“类对象”,也称为接受者,receiver。
而Go只是把C语言中的第一个参数放到方法前面而已,所以它并不是用来类型转换的,而是一个接收者,说明该方法属于哪个结构体。
你有可能会好奇接收器该不该加星号?
也就是方法的接收器什么时候适合是指向结构体的指针而不是结构体值。
你可以点击之前的链接,官方文档里说得很详细了。我这里简单概括下,还是以C语言为例,我们知道在C中如果对一个指针变量进行修改,那么它的“副本”们也都会被修改。
所以在Go中,
2 回答1.2k 阅读
2 回答781 阅读
3 回答585 阅读
2 回答859 阅读
2 回答843 阅读
960 阅读
1 回答728 阅读
类方法呀……
Golang 中的面向对象