Home > Backend Development > Golang > Why Are Go Functions Public with Uppercase Names but Packages Private with Lowercase Names?

Why Are Go Functions Public with Uppercase Names but Packages Private with Lowercase Names?

Mary-Kate Olsen
Release: 2024-11-26 15:26:12
Original
137 people have browsed it

Why Are Go Functions Public with Uppercase Names but Packages Private with Lowercase Names?

Public and Private Access Modifiers in Go: Upper Case and Lower Case Confusion

When transitioning from Delphi or C to Go, understanding the rules governing access modifiers can be challenging. Particularly confusing is the usage of upper and lower case letters to denote public and private access.

Rule for Access Modifiers:

In Go, public access is achieved by capitalizing the function or type name. For instance, a public function named myFunc would be written as func MyFunc().

Container Classes Exception:

However, when working with container classes like container/list, the rule seems to break. The container type name List is written in upper case, indicating public access, but the package name container/list is written in lower case. This inconsistency can be confusing.

Explanation:

In Go, packages are different from types. The package name indicates the file and directory where a package's code resides. The package name is usually the same as the last part of the package path, but this is not always the case.

The public members of a package are accessed through the upper case type name. In this example, container/list is the package path and List is the public type name. The lower case list is the alias for the package, allowing you to refer to it as list in your code.

Therefore, func GetFactors(value *int64) *list.List {...} and l := list.New() are both valid because List is a public type within the container/list package, and list is an alias for that package.

The above is the detailed content of Why Are Go Functions Public with Uppercase Names but Packages Private with Lowercase Names?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template