Skop Medan Struktur Golang

王林
Lepaskan: 2024-08-31 20:30:41
asal
869 orang telah melayarinya

Skop Medan Struktur

Medan Dieksport

Dalam bahasa lain, ini akan serupa dengan kelayakan akses awam.

  • Jika anda berasal dari Ruby seperti saya, ini akan mentakrifkan atribut dengan attr_accessor

Jika medan (iaitu atribut) struct bermula denganhuruf besar, ini bermakna medan itu dieksport, dengan itu boleh diakses di luar pakej.

Anggapkan kami mempunyai fail berikut dalam projek Go:

main.go /library /book.go
Salin selepas log masuk

Kami akan mentakrifkan book.go dalam pakejnya sendiri.

// 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 }
Salin selepas log masuk

Apabila menggunakannya dalam 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) }
Salin selepas log masuk

Dalam Ruby, ini adalah sinonim dengan menggunakan attr_accessor kerana kita boleh:

  • baca dan tulis nilai atribut di luar kelas
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
Salin selepas log masuk

Medan Persendirian

Ini serupa dengan kelayakan akses peribadi dalam bahasa lain

Jika ia bermula denganhuruf kecil, medan tidak akan dapat diakses.

Cuba sendiri!

Andaikan nama modul anda ialah myapp dalam go.mod

// go.mod module myapp go 1.22.5
Salin selepas log masuk

Kami mencipta fail baharu dalam library/book.go di bawah pustaka pakej

// 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 }
Salin selepas log masuk

Import pakej ke 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) }
Salin selepas log masuk

Jika anda mempunyai persediaan Go dalam VSCode, anda akan mendapat ralat lint berikut pada talian:

  • tajuk: "Tajuk Buku

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
Salin selepas log masuk

Atas ialah kandungan terperinci Skop Medan Struktur Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!