Lo modificadores de acceso, son las formas que nosotros podemos acceder a un Struct o a un atributo, ya sea si son públicos o privados se podrá acceder a ellos desde el mismo paquete o desde la misma carpeta.

En Go, para indicar si un struct o un atributo es público o privado, depende de la forma en cómo lo nombremos. Si el nombre de éstos empieza con mayúscula, es porque es público o si empieza en minúscula es porque es privada.

Struct privado con atributos privados

type carPrivate struct {
	brand string
	year int
}

Struct público con atributos públicos

package mypackage

// CarPublic car con acceso público
type CarPublic struct {
	Brand string
	Year int
}

Acceder CarPublic desde el main.go :

package main

import (
	"curso_golang_platzi/src/mypackage"
	"fmt"
)

func main(){

	var myCar mypackage.CarPublic
	myCar.Brand = "Renault"
	myCar.Year = 2020
	fmt.Println(myCar)

}

Resultado:

{Renault 2020}

<aside> 🚨 En la raíz del proyecto deben ejecutar el comando go mod init para que lea los paquetes el archivo main.go .

</aside>

Mismo código pero importando mypackage con un alias

package main

import (
	pk "curso_golang_platzi/src/mypackage"
	"fmt"
)

func main(){

	var myCar pk.CarPublic
	myCar.Brand = "Renault"
	myCar.Year = 2020
	fmt.Println(myCar)

}

Accediendo a una función de otro paquete

Al igual que los struct , las funciones son pública si se nombran con mayúscula o privadas si es con minúscula

func PrintMessage(text string){
	fmt.Println(text)
}
package main

import (
	pk "curso_golang_platzi/src/mypackage"
)

func main(){

	pk.PrintMessage("Hola Platzi")

}