Go Tape Equilibrium
func abs(n int) int {
	if n < 0 {
		return -n
	}

	return n
}

func tapeEquilibrium(a []int) int {
	firstPart := 0
	secondPart := 0
	for _, v := range a {
		secondPart += v
	}

	min := math.MaxInt
	for i := 0; i < len(a)-1; i++ {
		firstPart += i
		secondPart -= i
		if diff := abs(firstPart - secondPart); diff < min {
			min = diff
		}
	}

	return min
}

This keeps left and right running sums and updates the smallest difference at each split point.