Грађевине у Голангу

Структуре у Голангу су једна од најчешће коришћених и начин да се креирају кориснички дефинисани типови.

У овоме ћу покрити све основе о структурама и како их користити у вашим го програмима са неколико примера.

Хајде да почнемо!

Увод

А струцт је збирка вишеструких поља података са њиховим дефинисаним типовима података груписаним заједно. Они су корисни за груписање података како би се формирали прилагођени записи. Структура се састоји од уграђених и кориснички дефинисаних типова (сама структура је кориснички дефинисани тип).

Структуре у Голангу су променљиве, тј. могу се мењати кроз програм.

Структуре помажу у побољшању укупног квалитета кода омогућавајући нам да креирамо и прослеђујемо сложене структуре података кроз више модула. Замислите да проследите 10 параметара у функцију, ускоро ћете побећи од кода. Управо због тога су структуре корисне, сада уместо 10 параметара једноставно прослеђујете једну структуру тој функцији.

Структура је декларисана помоћу две кључне речи – тип анд струцт. Обмотан је витичастим заградама (баш као класе у Јави) – који садржи скуп поља која имају дефинисан тип и идентификатор (име). О детаљима имплементације расправљамо у следећем одељку.

Ако долазите из позадине објектно оријентисаног програмирања (ООП), структуру можете замислити као класу, али без наслеђа.

Декларисање структура

Сада, када разумете шта је структура и зашто се користи, време је да научите како да декларишете структуре. Основни скелет структуре изгледа као –

type name_of_struct struct { 
     field1 data_type_field1 
     field2 data_type_field2 
 }

Овде су тип и структура кључне речи, док структура садржи више поља са њиховим дефинисаним типом података.

  Набавите додатак за пројекат именица за МС Ворд и ПоверПоинт

Хајде да видимо пример –

package main

import (
	"fmt"
)

type User struct {
	name        string
	age         int
	bankBalance float32
}

func main() {
	var user User
	fmt.Println(user)
}

Овде дефинишемо корисничку структуру која се састоји од стринг, инт и флоат32 поља. У маин() декларишемо нашу структуру као корисника и штампамо је! Излаз који добијамо је нула/празна вредност структуре пошто је још нисмо иницијализовали! Тхе нулта вредност је у основи нула вредности сваког поља.

{ 0 0}

Иницијализација структура

У претходном одељку научили смо како да декларишемо структуре. Сада бисмо желели да им иницијализујемо или доделимо вредности. Проверите код у наставку како то радимо –

package main

import (
	"fmt"
)

type User struct {
	name        string
	age         int
	bankBalance float32
}

func main() {
	// With field names
	user1 := User{
		name:        "Mohit",
		age:         24,
		bankBalance: 100.0,
	}
	
	// Without field names
	user2 := User{"Nidhi", 21, 1000.0}
	
	fmt.Println(user1)
	fmt.Println(user2)
}

Сам код објашњава како иницијализујемо две структуре са и без имена поља. Овде ће излаз бити –

{Mohit 24 100}
 {Nidhi 21 1000}

У горњем случају, ако једно од поља није иницијализовано, онда то поље подразумевано поставља нулту вредност.

user1 := User{
	name:        "Mohit",
	age:         24,
}

 // Output - { Mohit 24 0.0 }

Постоји још један начин да се креирају структуре користећи нову кључну реч. Погледаћемо како га користити у следећем одељку.

Приступ пољима структуре

Сада знамо како да креирамо и иницијализујемо структуре, да видимо како да приступимо пољима структуре. За ово нам Голанг обезбеђује оператор тачке. Настављајући са претходним примером, приступимо пољима за име и узраст и одштампамо их.

package main

import (
	"fmt"
)

type User struct {
	name        string
	age         int
	bankBalance float32
}

func main() {
	// With field names
	user := User{
		name:        "Mohit",
		age:         24,
		bankBalance: 100.0,
	}

	fmt.Println(user.name)
	fmt.Println(user.age)
	fmt.Println(user.bankBalance)
}

Овде користимо струцт_наме.фиелд_наме за приступ пољима у структури. Излаз горњег кода ће бити –

Mohit
 24
 100

Као што је раније поменуто, можемо креирати структуре са новом кључном речи. Да видимо како –

user := new(User)
 user.name = "Mohit"
 user.age = 24
 user.bankBalance = 100.0

 fmt.Println(user)

 // Output - &{Mohit 24 100}

Нова кључна реч враћа показивач на иницијализовану структуру. У Голангу не морате експлицитно да дереференцирате показивач, али фмт.Принтлн(*усер) би резултирао истим излазом.

  7 најбољих В Рисинг серверских хостинга за све

Угнежђене структуре

Структуре у голангу могу да садрже и друге типове које дефинише корисник. Дакле, структура може да садржи друге угнежђене структуре.

package main

import (
	"fmt"
)

type User struct {
	name        string
	age         int
	bankBalance float32
	roleDetails RoleDetails
}

type RoleDetails struct {
	position string
	team     string
}

func main() {
	roleDetailForMohit := RoleDetails{
		position: "Software Engineer",
		team:     "Transport",
	}
	user := User{
		name:        "Mohit",
		age:         24,
		bankBalance: 100.0,
		roleDetails: roleDetailForMohit,
	}

	fmt.Println(user)
}

У коду изнад, имамо структуру РолеДетаилс као део корисничке структуре. Излаз ће бити –

{Mohit 24 100 {Software Engineer Transport}}

Ако желите да приступите ролеДетаилс, то можете учинити помоћу истог оператора тачке –

усер.ролеДетаилс.поситион

Структура једнакости

Две структуре су једнаке ако је свако од поља које имају једнака (и уграђена и кориснички дефинисана), али нису сви типови података упоредиви. (мапа није директно упоредива). Хајде да видимо пример да покажемо једнакост.

package main

import (
	"fmt"
)

type User struct {
	name        string
	age         int
	bankBalance float32
}

func main() {
	user1 := User{
		name:        "Mohit",
		age:         24,
		bankBalance: 100.0,
	}
	user2 := User{
		name:        "Mohit",
		age:         24,
		bankBalance: 100.0,
	}
	user3 := User{
		name:        "Nidhi",
		age:         21,
		bankBalance: 1000.0,
	}

	if user1 == user2 {
		fmt.Println("user1 and user2 are equal")
	} else {
		fmt.Println("user1 and user2 are not equal")
	}

	if user1 == user3 {
		fmt.Println("user1 and user3 are equal")
	} else {
		fmt.Println("user1 and user3 are not equal")
	}
}

Празне структуре и структуре нулте вредности су једнаке. Редослед поља није битан, у основи, свако поље треба да одговара за једнакост. Излаз за горњи код ће бити –

user1 and user2 are equal
user1 and user3 are not equal

Закључак

Сјајно!

Сада сте спремни да користите структуре у голангу. Покрили смо све основе као што су декларација, иницијализација и приступ пољима структуре. Такође смо погледали како да упоредимо две структуре и чак смо имплементирали угнежђену структуру. Ево неких ресурса да сазнате више о структурама –

  10 најбољих Аппле Ватцх Голф апликација за боље податке и аналитику [2023]

Има још много тога да се научи о структурама, али за сада је то добар почетак. Надам се да сте научили нешто ново!

Наставите да истражујете. Наставити са учењем!