Sobes.tech
Junior — Middle

Функциянын ичинде анын куракчаларынын чөйрөсүндө жайгашкан жана жалпы деп жарыяланган өзгөрмөгө кирүүгө болобу?

sobes.tech AI

AIден жооп

Go'до, өзгөрмөнүн көрүнүшү анын жарыяланган блок менен чектелет. Эгер өзгөрмө функциянын куракчаларынын ичинде жарыяланса (жергиликтүү өзгөрмө), ал гана ошол функция жана анын ички блокторунда жеткиликтүү болот. Go'до өзгөрмөнүн көрүнүшү (экспорттолушу) анын атынын чоң тамгасынан аныкталат жана ал башка пакеттерден көрүнүшүн билдирет, функциянын ичинде эмес.

Ошондуктан, функциянын ичинде, анын куракчаларында жарыяланган өзгөрмөгө кирүү мүмкүн, эгер ал ошол эле функцияда же тышкы көрүнүштөрдө жарыяланган болсо. Эгер өзгөрмө функциянын ичинде жарыяланса, ал жергиликтүү жана гана ошол функцияда жеткиликтүү болот. Эгер өзгөрмө функциянын сыртында жарыяланса жана экспорттолгон (жеке эмес), анда да функциянын ичинде кайрылса болот.

Мисал:

package main

import "fmt"

var PublicVar = "бардык пакетте жана башка пакеттерден жеткиликтүү"

func мисал() {
    localVar := "тек мисал ичинде жеткиликтүү"
    fmt.Println(PublicVar) // коомдук өзгөрмөгө кирүү
    fmt.Println(localVar)  // жергиликтүү өзгөрмөгө кирүү
}

func main() {
    мисал()
}

Эгер өзгөрмө функциянын ичинде жарыяланса, ал ошол функциядан тышкары жеткиликтүү болбойт, дале анын аты "коомдук" (большой тамгадан башталган) болсо дагы.