2016-07-22 18 views
1

Mein Projekt ist wieImplementierung einer Schnittstelle in Go

github.com/achanda/poke 
├── cmd 
│   └── poke.go 
├── scanner.go 
├── txt_scanner.go 
└── types.go 

Die Dateien folgt sind als

# cat scanner.go 
package poke 

type Scanner interface { 
    Scan() *ScanResult 
} 

# cat txt_scanner.go 
package poke 

type txtScanner struct { 
    txt string 
} 

func newTxtScanner(host string) Scanner { 
    return txtScanner{txt} 
} 

func (tcpcs txtScanner) Scan() *ScanResult { 
    // do stuff 
    return &result 
} 

Nun folgt das ich versuche, in meinem Haupt-Paket zu nennen (in poke.go) wie diese

package main 

import "github.com/achanda/poke" 

func main() { 
    var sr poke.Scanner 
    sr = poke.txtScanner{txt} 
    sr.Scan() 
} 

Das mit

laufen versagt
# command-line-arguments 
./poke.go:111: cannot refer to unexported name poke.txtScanner 
./poke.go:111: undefined: portscan.txtScanner 

Was mache ich falsch?

Antwort

2

benötigen Sie Typ oder ein Feld außerhalb des Pakets zugreifen zu können, so sollten Sie diese Anfangsbuchstaben Großbuchstaben verwendet exportieren:

zuerst sollten Sie Ihre txtScanner und txt string mit ersten Großbuchstaben definieren, sonst werden Sie das sehen auch Fehler:

.\poke.go:8: implicit assignment of unexported field 'txt' in poke.TxtScanner literal 

wie folgt aus:

siehe auch newTxtScanner(host string) Funktion in diesem Arbeitsbeispielcode:
poke.go:

package main 

import "github.com/achanda/poke" 

func main() { 
    s := "test" 
    var sr poke.Scanner 
    sr = poke.TxtScanner{s} 
    sr.Scan() 
} 

txt_scanner.go:

package poke 

type TxtScanner struct { 
    Txt string 
} 

func newTxtScanner(host string) Scanner { 
    return TxtScanner{host} 
} 

func (tcpcs TxtScanner) Scan() *ScanResult { 
    // do stuff 
    result := ScanResult{} 
    return &result 
} 

types.go:

package poke 

type ScanResult struct { 
} 

scanner.go:

package poke 

type Scanner interface { 
    Scan() *ScanResult 
} 
+0

Danke, das hat funktioniert. Die Fehlermeldung ist kryptisch! –

Verwandte Themen