05-write-your-first-library-package/questions/README.md
NOTE There are explanations inside the answers. Even if you know the answer please try to select all of them one by one, so you can read the explanations.
1: You can't, but you can import it from other packages.
2: In a library package, you don't have to include the main function. Because it isn't an executable package. Only in executable packages you need a main func.
4: You don't have to compile it. When you import it, it will automatically be built by the other program or library when it gets compiled or ran.
1: When you do so, it will be exported, that's true, but don't do that; so I assume that this answer is not correct :)
2: That's right. Then the other packages can access it.
3: It should be in a package scope, not function scope.
4: You don't have to do that.
1: You can't export packages. All packages are already exported. Unless you put them in a directory called: "internal". But, that's an advanced topic for now.
2: That's right.
3: You can't access a package from another package without importing it.
4: No, you can't. You need to import it using its full directory path after GOPATH. BTW, in the near future, this may change with the Go modules support.
package wizard
import "fmt"
func doMagic() {
fmt.Println("enchanted!")
}
func Fireball() {
fmt.Println("fireball!!!")
}
1: That's just an imported package name.
2: It starts with a lowercase letter; so, it's not exported.
3: That's right. It starts with a capital letter.
4: This isn't your function. It's already been exported in the fmt package. But, it isn't exported here.
package wizard
import "fmt"
var one string
var Two string
var greenTrees string
func doMagic() {
fmt.Println("enchanted!")
}
func Fireball() {
fmt.Println("fireball!!!")
}
1: doMagic starts with a lowercase letter; so, it's not exported.
2: That's right. Fireball and Two, they both start with a capital letter.
3: greenTrees starts with a lowercase letter; so, it's not exported.
4: one and greenTrees do not start with capital letters; so, they're not exported.