อนุญาตให้ใช้ฟังก์ชันที่ซ้อนกันใน Go คุณเพียงแค่กำหนดให้กับตัวแปรท้องถิ่นภายในฟังก์ชันภายนอกและเรียกใช้โดยใช้ตัวแปรเหล่านั้น
ตัวอย่าง:
func outerFunction(iterations int, s1, s2 string) int {
    someState := 0
    innerFunction := func(param string) int {
        
        totalLength := 0
        
        
        for i := 0; i < iterations; i++) {
            totalLength += len(param)
        }
        return totalLength
    }
    
    someState = innerFunction(s1)
    someState += innerFunction(s2)
    return someState
}
myVar := outerFunction(100, "blah", "meh")
ฟังก์ชั่นภายในมักมีประโยชน์สำหรับ goroutines ในท้องถิ่น:
func outerFunction(...) {
    innerFunction := func(...) {
        ...
    }
    go innerFunction(...)
}
     
              
func main() { func (x int) int { return x+1; }(3) }