DevGang
Авторизоваться

Работа со структурами в Golang 

Структуры в Golang - это возможность создавать определяемый пользователем тип данных из группы полей данных с разными типами данных. Поле данных в структуре может быть объявлено со встроенными или определяемыми пользователем типами данных.

Концепцию структуры можно сравнить с объектно-ориентированным программированием, которое поддерживает композицию, но не наследование.

Объявить структуру

Мы можем представить свойства или поля любой реальной сущности в структуре. Например, у сотрудника есть такие свойства, как firstName, lastName, age, phone, address и salary. Мы можем сгруппировать эти свойства в структуру Employee, как показано ниже.

type Employee struct {  
    firstName string
    lastName  string
	age       int
    phone     int
	address   string
	salary    int
}

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

type Employee struct {  
    firstName, lastName, address string
    age, phone, salary int    
}

Создать экземпляр структуры

Мы можем создать экземпляр структуры, присвоив его переменной.

var emp = Employee 

или

emp := Employee 

Мы также можем создать экземпляр, используя ключевое слово new.

emp := new(Employee) 

Вот полный пример кода для создания экземпляра структуры Employee и передачи значений полей данных. Мы также будем получать доступ к значениям полей данных с помощью оператора ..

package main
 
import "fmt"
 
type Employee struct {  
    firstName, lastName, address string
    age, phone, salary int    
}
 
func main() {	
	emp := Employee{firstName: "Jhon", lastName: "Smith", age: 35, phone: 123456789, salary: 50000, address: "Newyork"} 	
	fmt.Println("Employee name : ", emp.firstName, emp.lastName)
	fmt.Println("Employee age : ", emp.age)
	fmt.Println("Employee salary : ", emp.salary)
	fmt.Println("Employee phone : ", emp.phone)
	fmt.Println("Employee address : ", emp.address)	
}

Приведенный выше пример кода выведет следующее:

Employee name :  Jhon Smith
Employee age :  35
Employee salary :  50000
Employee phone :  123456789
Employee address :  Newyork

Экземпляр структуры с помощью указателя

Мы можем создать экземпляр структуры, используя символ оператора адреса указателя &.

package main
 
import "fmt"
 
type Employee struct {  
    firstName, lastName, address string
    age, phone, salary int    
}
 
func main() {	
	emp1 := &Employee{"Kane", "William", "London", 30, 123456789, 40000} 	
	fmt.Println(emp1)
	
	emp2 := &Employee{firstName: "Jhon", lastName: "Smith", age: 35, phone: 123456789, salary: 50000, address: "Newyork"} 	
	fmt.Println(emp2)
}

Приведенный выше пример кода выведет следующее:

&{Kane William London 30 123456789 40000}
&{Jhon Smith Newyork 35 123456789 50000}

Вложенные структуры

Мы можем создать структуру, содержащую в себе другую структуру. В приведенном ниже примере мы будем использовать структуру Address внутри структуры Employee для города, штата и страны сотрудника.

package main
 
import "fmt"
 
type Employee struct {  
    firstName, lastName string
    age, phone, salary int    
	address Address
}

type Address struct {  
    city  string
    state string
	country string
}
 
func main() {	
	emp := Employee{
		firstName: "Jhon", 
		lastName: "Smith", 
		age: 35, 
		phone: 123456789, 
		salary: 50000, 
		address: Address{
			city:  "Chicago",
			state: "Illinois",
			country: "USA",
		},
	} 
	
	fmt.Println("Employee name : ", emp.firstName, emp.lastName)
	fmt.Println("Employee city : ", emp.address.city)	
	fmt.Println("Employee city : ", emp.address.state)
	fmt.Println("Employee city : ", emp.address.country)
}

Приведенный выше пример кода выведет следующее:

Employee name :  Jhon Smith
Employee city :  Chicago
Employee city :  Illinois
Employee city :  USA
#Golang
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

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

Попробовать

Оплатив хостинг 25$ в подарок вы получите 100$ на счет

Получить