Technology sharing

[Go series] ordinata, segmentum et tabula

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Coniungere prior et proximus

Si et in precedente articulo introducimus.continue Editio summa numerorum parium intra 100 computare. Ut scribimus codice,continuePropositio adiuvabit nos omittere quasdam iterationes quae non sunt necessariae, exempli gratia, in hoc exemplo omnes numeros impares praetermittemus.

  1. sum := 0
  2. for i := 1; i < 100; i++{
  3. if i & 1 == 0 {
  4. continue
  5. }
  6. sum += i
  7. }
  8. fmt.Println("the sum is",sum)

Satus cognita

In programmando saepe opus est de elementis eiusdem generis agere, et hae elementa elementa certis structuris in lingua Go. Hodie pluribus generibus collectionum te introducam in speciali: ordinata, scalpere et tabula.

ordinata

Primum, cum vestit incipiamus. Ordinata est structura principalissima in Go. Ordo declaratur, longitudo mutari non potest. Vestium declaratio et initialization valde simplex sunt;

Annuntiate ordinata

Cum annuntiem ordinem, opus est ut speciem ordinatam et ordinatam longitudinem definias. Ecce quomodo ordo declaratur;

var arrayName [arrayLength]elementType

Exempli gratia integram longitudinis aciem V;

var numbers [5]int
initialize ordinata

Ordinare potes initialize variis modis:

  • Litterae initialization utere:
var numbers = [5]int{1, 2, 3, 4, 5}
  • usus:=Brevis editio:
numbers := [5]int{1, 2, 3, 4, 5}
  • Automatice colligitur longitudo ordinata;
numbers := [...]int{1, 2, 3, 4, 5}
  • Specificare index initialization:
numbers := [5]int{0: 1, 4: 5}

Characteres vestit

  • Certis longitudinis: Longitudo ordinis determinatur cum declaratur et mutari non potest.
  • elementis eiusdem generis: Arrays non nisi eiusdem generis elementa continent.
  • destinatio memoria contigua: Ordinata elementa in memoriam contigue sortita sunt, quae elementa accessione ordinata valde efficiens facit.

Accessum ordinata elementa

Accedere potes elementis ordinatis per indicem, ab 0 incipiens:

value := numbers[2] // 获取索引为 2 的元素

Discurre ordinata

vos can utorforAnsa per omnia elementa in aciem instruuntur;

  1. for i, value := range numbers {
  2. fmt.Printf("Index: %d, Value: %dn", i, value)
  3. }

longitudo ordinata

Vos can uti constructum-inlenMunus ad longitudinem ordinata;

length := len(numbers)

nulla valorem ordinata

Si ordinatio explicite non initializata est, elementa eius automatice posita sunt ad nullius pretii sui generis. Exempli gratia, nullius valoris numeri integri est 0:

var numbers [5]int // 所有元素都是 0

Multidimensional Arrays

Lingua Ire etiam multi dimensiones vestit sustinet. Exemplum est talis declarandi et initialisandi 2x3 integer instructus:

  1. var matrix [2][3]int
  2. matrix = [2][3]int{{1, 2, 3}, {4, 5, 6}}

Limites Arrays

Cum diuturnitas ordinata sit, hoc in quibusdam flexibile esse non potest. Si collectione variabili longitudine indigeas, segmentis uti potes.

scalpere

Proxima est frustum, quod flexibilius aedificatur in specie, quae tamquam ordinata dynamica cogitari potest. Longitudo segmenti variabilis est et secundum aciem ordinatur, commodius providens. Hic est quomodo enuntiet et initialize frustum:

  1. s := make([]int, 3) // 创建一个长度为3的整型切片
  2. s[0] = 1 // 切片元素赋值
  3. s[1] = 2
  4. s[2] = 3
  5. s = append(s, 4) // 向切片追加元素

In lingua Go, quamquam vestium et segmentorum series elementorum eiusdem generis condere solebant, significantes tamen differentias habent memoriae destinatio, magnitudo, variabilitas, usus. Hic principales differentiae sunt inter vestes et crustae;

magnitudine varietatem

  • ordinata : Magnitudo ordinis determinatur cum declaratur et postea mutari non potest.Magnitudo ordinata pars sui generis est[3]intet[4]intdiversorum generum sunt.
  • scalpere : Crustae dynamicae sunt et crescere vel minui possunt tempore runtime.Magnitudo segmenti sui generis non est pars: ergo[]intInteger purus genus commune est omnibus.

memoria destinatio

  • ordinata : ordinatae sunt pretii species, et cum ordinatio pro functione parametri praetermittitur, exemplar eius pretii praetermittitur. Hoc significat modificationes ordinata intra munus originale ordinata non afficiunt.
  • scalpere : Scalpere est genus relationis, quod regulam continet ad ordinatam, longitudinem et capacitatem segmenti. Cum segmentum ut munus parametri transigitur, exemplar monstratoris transmittitur, ita modificationes ad segmentum in functione primigenium segmentum afficiet.

initialization "

  • ordinata: Cum initializing aciem instrui debet, magnitudo specificari debet, et elementa bona statim assignari possunt.
  • scalpere: crustae literales transiri possunt;makeMunus vel scalpere ab agmine ad initialize, nulla magnitudine specificata.

Sample code

Exempla hic sunt initializationis pro vestimentis et segmentis:

  1. // 数组
  2. var arr [3]int = [3]int{1, 2, 3}
  3. // 切片
  4. var slice []int = []int{1, 2, 3}
  5. // 或者使用 make 函数
  6. slice := make([]int, 3)

Differentiae functiones

  • ordinata: Quoniam fixa magnitudo, ordinata magnitudo cognoscitur in tempore ordinandi, quo possibilis est memoria collocare in ACERVA ordinata, et tempus complexionis accessionis elementorum est O (1).
  • scalpere: Slicing molliorem praebet byappend Munus elementa addit, vel subslices per partes dividendas acquirit.Ratio segmenti ordinatio in acervum collocari potest, et tempus multiplicitas elementorum segmenti accessionis est etiam O (1);appendInveniri poterit in reallocatione ordinatae subiectarum, quae proprie est operatio O (n).

mapping

Denique tabulas inspiciamus. Tabula geographica est ordinata associativa in Go quae tabulae claves ad valores habent. Tabulae claves cuiuslibet generis aequabilitatis operantis sustentari possunt, ut integri, punctum fluitantes numeri, chordae, indicibus, interfaces (dummodo valores intra inter faciem comparabiles continentur), structurae et vestitus. Deformatus valor cuiuslibet generis esse potest.

Declaratio et initialization

annuntiate tabula

Syntaxis tabulae declarandae talis est:

var mapName map[keyType]valueType

Exempli causa, chartam geographicam cum clavibus tamquam chordis et valores integris declaramus;

var scores map[string]int
Initialize map

Post tabulam declarandam, opus est tibimakemunus ad initialize eam sic adhiberi potest;

scores = make(map[string]int)

Vel, brevi declaratione uti potes et initialize;

scores := make(map[string]int)

Litteras quoque uti potes ad tempus declarationis initializationis;

  1. scores := map[string]int{
  2. "alice": 90,
  3. "bob": 85,
  4. "charlie": 88,
  5. }

Features of map

  • key singularitatem: In charta singula clavis est unica. Si clavem existentem inserere conaris, valorem clavii respondentem renovabit.
  • inordinatio:mappa inordinatus est, et ordo elementorum singulis temporibus diversus est, tabula iteratur.
  • dynamic magnitudine: Magnitudo tabulae dynamicae est, quantum opus est addere vel removere paria clavis-pretii.
  • reference genus: Tabula referens genus est. Cum tabulam ad functionem transieris, id quod actu transieris, monstrator est ad structuram datam subiectam.

Operatio map

Add elementum
scores["alice"] = 90
Ut elementum
value := scores["alice"]

Si clavis non existit, nullius pretii illius generis valoris reddetur.

Reprehendo si clavis exstat

Comma -ok idiomatum uti potes ad reprimendam si clavis in charta exsistit:

  1. value, exists := scores["alice"]
  2. if exists {
  3. // 键存在
  4. } else {
  5. // 键不存在
  6. }
Delere elementum

ususdeleteMunus potest removere clavem-valorem par ex tabula:

delete(scores, "alice")

Si clavis non est,deleteMunus nihil facit.

Tabula percurre

ususforA loop percurrere potest omnia key-valorem paria in tabula:

  1. for key, value := range scores {
  2. fmt.Printf("%s: %dn", key, value)
  3. }

nulla valorem tabula

De valore nulla tabula estnil .unusnil Tabula geographica nullam subiectam notitiarum structuram habet et elementa addere non potest.Priusquam elementa in tabula adieceris, uti debesmakeInitialise est.

longitudinem map

Vos can uti constructum-inlenMunus ad numerum key-valorem paria in tabula:

length := len(scores)

Map key genus

Tabulae claves cuiuslibet generis comparabiles esse possunt, ut numeros, chordae, indicibus, interfaces (dummodo valores intra inter faciem continentur), structurae, vestitus, etc. Crustae, tabulae et functiones non possunt clavium tabulae esse, quia huiusmodi rationes aequalitatem comparationes non sustinent.

Facile errare

In lingua Ire, vestis, pecias et tabulae sunt tres structurae vulgariter datae, quarum unaquaeque habet diversas notas et considerationes. Hic quaedam notanda sunt cum utentes;

Ordinare

  • Fugientes nimis magna vestit ut tollant multum spatium ACERVUS et faciat ACERVUS redundantiam.
  • Arrays adhibentur cum certae magnitudinis notitiarum collectio exigitur.

Scalpere

  • Memoria reallocationis accidere potest cum dividendo dilatetur.
  • Fugientes crustae nimis magnae sunt ut multum spatii acervi capere possunt.
  • Nota quod nullius valoris segmenti estnilnecesse est ut ante usum initialized.

map

  • De valore nulla tabula estnilnilTabula geographica adhiberi potest ut paria clavem pretii reponunt et ante usum initialized debet.
  • In ambitu concurrente, operationes in tabula legendas et scribendas non sunt tutae et necessariae utendo mutex senis vel aliis machinationibus synchronisationi usibus custodiendae.
  • ususdeleteClavem delendo, quae non existit, errorem non generat, sed tutum est reprimendi si clavis sit.