Heim >Backend-Entwicklung >Golang >Golang-Struct-Feldzielfernrohre

Golang-Struct-Feldzielfernrohre

王林
王林Original
2024-08-31 20:30:411232Durchsuche

Strukturfeldbereiche

Exportierte Felder

In anderen Sprachen ähnelt dies dem Qualifikationsmerkmal für den öffentlichen Zugriff.

  • Wenn Sie wie ich aus Ruby stammen, wäre dies das Definieren von Attributen mit attr_accessor

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:

  • Lesen und schreiben Sie die Attributwerte außerhalb der Klasse
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

Private Felder

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:

  • Titel: „Buchtitel“

Golang Struct Field Scopes

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:gRPC zwischen Web und Server.Nächster Artikel:gRPC zwischen Web und Server.