私はちょうどGo tourで作業していますが、私はポインタとインターフェイスについて混乱しています。なぜこのGoコードはコンパイルされませんか?* *構造体を*インタフェースに割り当てることができないのはなぜですか?
package main
type Interface interface {}
type Struct struct {}
func main() {
var ps *Struct
var pi *Interface
pi = ps
_, _ = pi, ps
}
すなわちStruct
がInterface
であれば、なぜ*Struct
は*Interface
のではないでしょうか?
私が取得エラーメッセージは次のとおりです。
prog.go:10: cannot use ps (type *Struct) as type *Interface in assignment:
*Interface is pointer to interface, not interface
インタフェースは暗黙のポインタのように振る舞うことができようも参照http://stackoverflow.com/q/20874798/260805 – Ztyx
それが見える... – Victor
は、私が豊かに提案することを使用する必要があります。 'FUNCメイン(私は \tをインタフェース){ \tのvar PS *構造体=新しい(構造体) \tのvarパイ*インタフェース \t VAR私はpsの \tパイを= =&I \tであなたの遊び場\t i = * ps \t fmt.Printf( "%v、%v、%v \ n"、*、%v、%v、%v、%v、 ps、pi、i) \t _、_ = i、pi、ps } 'あなた自身の賛美をしてください。 – Victor