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

Golang 기본 튜토리얼

Golang 제어 문

Golang 함수 & 메서드

Golang 구조체

Golang 슬라이스 & 배열

Golang 문자열(String)

Golang 포인터

Golang 인터페이스

Golang 동기

Golang 예외(Error)

Golang 기타Miscellaneous

Go 함수를 구조체 필드로 사용

Golang에서 구조체 또는 struct는 사용자 정의 유형으로, 한 단위에서 다양한 유형의 요소를 생성할 수 있습니다. 모든 속성이나 필드를 가진 실제 엔티티는 구조체로 표현될 수 있습니다. 우리는 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("5월에 발행한 문서 총 수:      ", result.Marticles) 
    fmt.Println("각 문서 보상:      ", result.Pay) 
    fmt.Println("총 급여:      ", result.salary(result.Marticles, result.Pay)) 
}

출력:

저자 이름:      Sonia
언어:      Java
5월에 발행한 문서 총 수:  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