GO: func pathOfZeroAndOne( maze [][]int ) int64 {     m:=len(maze)     n:=len(maze[0])     visit:=make([][]bool,m)     for i:=0;i<m;i++{         visit[i]=make([]bool,n)     }     res:=0     zero:=0     one:=0     var dfs func(int,int,int)     dfs=func(i,j,pre int){         if i<0 || i>=m || j<0 || j>=n || visit[i][j]==true || maze[i][j]==pre{             return         }         val:=maze[i][j]         visit[i][j]=true         if val==0{             zero++         }else{             one++         }         dfs(i-1,j,val)         dfs(i+1,j,val)         dfs(i,j-1,val)         dfs(i,j+1,val)              }     for i:=0;i<m;i++{         for j:=0;j<n;j++{             if !visit[i][j]{                 zero=0                 one=0                 dfs(i,j,-1)                 res=res+zero*one             }         }     }     return int64(res) }