English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основы Golang

Контрольные операторы в Golang

Функции и методы в Golang

Структуры в Golang

Срезы и массивы в Golang

Строки (String) в Golang

Указатели в Golang

Интерфейсы в Golang

Конкурентное программирование в Golang

Исключения (Error) в Golang

Другие темы Golang

Функция в качестве поля структуры в Go

Структуры или 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