Link to Part 1: https://himashikarunathilake.medium.com/go-1-74940ce2556d
Link to Part 2: https://himashikarunathilake.medium.com/go-2-79dc2c04db26
Link to Part 3: https://himashikarunathilake.medium.com/go-3-acbfda8360ed
Link to Part 4: https://himashikarunathilake.medium.com/go-4-7b1ead499bb9

Ниже приведен файл main.go, который будет использоваться для запуска всех подфайлов в этом разделе:

// The fifth program in Go.

package main

import (
 "fmt"
 "packs"
)

func main() {
 fmt.Println()

 fmt.Println("*************** RUNNING THE GREETINGS.GO FILE ***************")
 packs.SayHello()
 fmt.Println("__________________________________________________________________________________________")
 fmt.Println()

 fmt.Println("*************** RUNNING THE ANONYMOUS_FUNCTIONS.GO FILE ***************")
 AnonymousFunctions()
 fmt.Println("__________________________________________________________________________________________")
 fmt.Println()
}

Модули

Модули в Go предоставляют способ управления зависимостями и версиями в ваших проектах, а также позволяют определять и поддерживать определенный набор пакетов и их версий, от которых зависит ваш проект.

Инициализация модуля

Чтобы инициализировать модуль, выполните следующую команду в командной строке.

go mod init github.com/your_username/you_file_name

Добавление зависимостей

Чтобы добавить зависимость в проект, необходимо импортировать необходимые пакеты. Например, предположим, что вам нужно включить драйвер MySQL для вашего проекта Go, тогда вы можете импортировать в свой проект следующий пакет:

import "github.com/go-sql-driver/mysql"

Управление зависимостями

Зависимостями и их версиями можно управлять через созданный файл go.mod.

Обновление зависимостей

Чтобы обновить все зависимости в вашем проекте, выполните в терминале следующую команду:

go get -u

Пакеты

Пакеты Go можно использовать для группировки связанных функций, типов и переменных.

Декларация пакета

Каждый исходный файл Go начинается с объявления пакета, в котором указывается пакет, которому принадлежит файл.

Имя пакета должно быть в нижнем регистре.

package package_name

Экспортированные и неэкспортированные имена

Name starts with a:

Uppercase Letter    Exported       Accessible from other packages

Lowercase Letter    Un-exported    Can only be accessed within the same 
                                   package
package packs

import "fmt"

// Exported function
func SayHello() {
 fmt.Println("Hello!")
}

// Un-exported function
func sayGoodbye() {
 fmt.Println("Goodbye!")
}

Импорт пакетов

Чтобы использовать функции, типы или переменные из другого пакета, их необходимо импортировать.

// The fifth program in Go.

package main

import (
 "fmt"
 "packs"
)

func main() {
 fmt.Println()

 fmt.Println("*************** RUNNING THE GREETINGS.GO FILE ***************")
 packs.SayHello()
 fmt.Println("__________________________________________________________________________________________")
 fmt.Println()
}

Анонимные функции

Анонимные функции определяются в строке и не имеют имени. Они часто используются в качестве обратных вызовов или в качестве тела цикла for.

Назначение анонимной функции переменной

package main

import "fmt"

func AnonymousFunctions() {
 // Assign an anonymous function to a variable
 sum := func(num1, num2 int) int {
  return num1 + num2
 }
}

Вызов анонимной функции

package main

import "fmt"

func AnonymousFunctions() {
 // Assign an anonymous function to a variable
 sum := func(num1, num2 int) int {
  return num1 + num2
 }

 // Call the anonymous function
 var num1, num2 int

 fmt.Print("Please provide the first number: ")
 fmt.Scan(&num1)
 fmt.Print("Please provide the second number: ")
 fmt.Scan(&num2)

 fmt.Println()

 fmt.Printf("The addition of the two numbers are: %d\n", sum(num1, num2))
}

Вы можете получить доступ к исходному коду по адресу: Go/Part-5 at master · Himashi-Karunathilake/Go (github.com)