typeUserinterface{SetPassword(string)errorCheckPassword(string)bool}typeTeacherstruct{}//SetPassword 设置密码,实现 user 接口func(tch*Teacher)SetPassword(passwordstring)error{bytes,err:=bcrypt.GenerateFromPassword([]byte(password),PassWordCost)iferr!=nil{returnerr}tch.Password=string(bytes)returnnil}//CheckPassword 校验密码,实现 user 接口func(tch*Teacher)CheckPassword(passwordstring)bool{err:=bcrypt.CompareHashAndPassword([]byte(tch.Password),[]byte(password))returnerr==nil}
如果像以上,方法接受者使用的是指针类型,由于该类型的方法只能被该结构体的指针类型调用,故 User 接口只对此结构体的指针生效。可以通过以下方法进行类型断言,即判断该对象是否符合接口的指针类型