In anderen Sprachen ähnelt dies dem Qualifikationsmerkmal für den öffentlichen Zugriff.
Wenn das Feld (d. h. das Attribut) der Struktur mit einem Großbuchstaben beginnt, würde dies bedeuten, dass dieses Feld exportiert wird und somit außerhalb des Pakets zugänglich ist.
Angenommen, wir haben die folgenden Dateien im Go-Projekt:
main.go /library /book.go
Wir würden book.go in einem eigenen Paket definieren.
// library/book.go // Assume we have a package called "library" which contains a book. package library // Struct that represents a physical book in a library with exported fields type Book struct { Title string, Author string }
Bei Verwendung in main.go:
package main import ( "fmt" "library" // importing the package that the struct Book is in ) func main() { book := library.Book{ Title: "Book Title", Author: "John Snow" } // Print the title and author to show that the struct Book fields are accessible outisde it's package "library" fmt.Println("Title:", book.Title) fmt.Println("Author:", book.Author) }
In Ruby wäre dies gleichbedeutend mit der Verwendung von attr_accessor, da wir Folgendes können:
class Book # allow read and write on the attributes from outside the class attr_accessor(:title, :author) def initalize(title = nil, author = nil) @title = title @author = authoer end end # usage outside of the class book = Book.new() # assinging attributes outside of the class book.title = "Book Title" book.title = "Jon Snow" # accessing attributes outside of the class puts book.title, book.author
Dies ähnelt den Qualifikationsmerkmalen für den privaten Zugriff in anderen Sprachen
Wenn es mit einem Kleinbuchstaben beginnt, sind die Felder nicht zugänglich.
Probieren Sie es selbst aus!
Angenommen, Ihr Modulname ist myapp in go.mod
// go.mod module myapp go 1.22.5
Wir erstellen eine neue Datei in Library/book.go unter der Paketbibliothek
// library/book.go // Assume we have a package called "library" which contains a book. package library // Fields start with lowercase, fields are not exported type Book struct { title string author string }
Importieren Sie das Paket in main.go
// main.go package main import ( "fmt" // import the library package "myapp/library" ) func main() { book := library.Book{ title: "Book Title", author: "John Snow" } // Print the title and author to show that the struct Book fields are accessible outisde it's package "library" fmt.Println("title:", book.title) fmt.Println("author:", book.author) }
Wenn Sie Go in VSCode eingerichtet haben, wird in der Zeile der folgende Lint-Fehler angezeigt:
unknown field author in struct literal of type library.Bookcompiler[MissingLitField](https://pkg.go.dev/golang.org/x/tools/internal/typesinternal#MissingLitField
Das obige ist der detaillierte Inhalt vonGolang-Struct-Feldzielfernrohre. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!