English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Структуры или struct в Golang — это пользовательские типы, которые позволяют создавать набор различных элементов в одном блоке. Любое реальное существо, обладающее набором свойств или полей, можно представить как структуру. Мы знаем, что в языке Go функции также являются пользовательскими типами, поэтому можно создать функциональное поле в структуре Go. Вы также можете создать функциональное поле в структуре Go с помощью анонимной функции, как показано в примере 2.
Синтаксис:
type function_name func() type strcut_name struct{ var_name function_name }
Давайте рассмотрим этот концепт на примере:
//作为Go结构中的字段 package main import "fmt" // Finalsalary函数类型 type Finalsalary func(int, int) int //Создание структуры type Author struct { name string language string Marticles int Pay int //Функция в качестве поля salary Finalsalary } func main() { //Инициализация полей структуры result := Author{ name: "Sonia", language: "Java", Marticles: 120, Pay: 500, salary func(Ma int, pay int) int { return Ma * pay , } fmt.Println("Имя автора: ", result.name) fmt.Println("Язык: ", result.language) fmt.Println("Количество статей, опубликованных в мае: ", result.Marticles) fmt.Println("Оплата за статью: ", result.Pay) fmt.Println("Общий оклад: ", result.salary(result.Marticles, result.Pay)) }
Вывод:
Имя автора: Sonia Язык: Java Количество статей, опубликованных в мае: 120 Оплата за статью: 500 Общий оклад: 60000
Использование анонимной функции в качестве поля структуры Go 2:
//Использование анонимной функции в качестве поля структуры Go package main import "fmt" //Создание структуры type Author struct { name string language string Tarticles int Particles int Pending func(int, int) int } func main() { //Инициализация полей структуры result := Author{ name: "Sonia", language: "Java", Tarticles: 340, Particles: 259, Pending: func(Ta int, Pa int) int { return Ta - Pa , } fmt.Println("Имя автора: ", result.name) fmt.Println("Язык: ", result.language) fmt.Println("Общее количество статей: ", result.Tarticles) fmt.Println("Общее количество опубликованных статей: ", result.Particles) fmt.Println("Ожидаемые статьи: ", result.Pending(result.Tarticles, result.Particles)) }
Вывод:
Имя автора: Sonia Язык: Java Общее количество статей: 340 Общее количество опубликованных статей: 259 Ожидаемые статьи: 81