53 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// For more tutorials: https://blog.learngoprogramming.com
 | 
						|
//
 | 
						|
// Copyright © 2018 Inanc Gumus
 | 
						|
// Learn Go Programming Course
 | 
						|
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
 | 
						|
//
 | 
						|
 | 
						|
package main
 | 
						|
 | 
						|
import "fmt"
 | 
						|
 | 
						|
type filterFunc func(int) bool
 | 
						|
 | 
						|
func main() {
 | 
						|
	signatures()
 | 
						|
	funcValues()
 | 
						|
}
 | 
						|
 | 
						|
func isEven(n int) bool {
 | 
						|
	return n%2 == 0
 | 
						|
}
 | 
						|
 | 
						|
func isOdd(m int) bool {
 | 
						|
	return m%2 == 1
 | 
						|
}
 | 
						|
 | 
						|
func signatures() {
 | 
						|
	fmt.Println("••• FUNC SIGNATURES (TYPES) •••")
 | 
						|
	fmt.Printf("isEven     : %T\n", isEven)
 | 
						|
	fmt.Printf("isOdd      : %T\n", isOdd)
 | 
						|
}
 | 
						|
 | 
						|
func funcValues() {
 | 
						|
	fmt.Println("\n••• FUNC VALUES (VARS) •••")
 | 
						|
 | 
						|
	// var value func(int) bool
 | 
						|
	var value filterFunc
 | 
						|
	fmt.Printf("value nil? : %t\n", value == nil)
 | 
						|
 | 
						|
	value = isEven
 | 
						|
	fmt.Printf("value(2)   : %t\n", value(2))
 | 
						|
	fmt.Printf("isEven(2)  : %t\n", isEven(2))
 | 
						|
 | 
						|
	value = isOdd
 | 
						|
	fmt.Printf("value(1)   : %t\n", value(1))
 | 
						|
	fmt.Printf("isOdd(1)   : %t\n", isOdd(1))
 | 
						|
 | 
						|
	fmt.Printf("value nil? : %t\n", value == nil)
 | 
						|
	fmt.Printf("value      : %p\n", value)
 | 
						|
	fmt.Printf("isEven     : %p\n", isEven)
 | 
						|
	fmt.Printf("isOdd      : %p\n", isOdd)
 | 
						|
}
 |