diff --git a/pixelgl/attr.go b/pixelgl/attr.go
index 7da5e4a5b36d492826819da78a9d78a0b9284a61..ec459110183ba0b074e6d6a94314851c5adcba8f 100644
--- a/pixelgl/attr.go
+++ b/pixelgl/attr.go
@@ -59,20 +59,36 @@ const (
 
 // Size returns the size of a type in bytes.
 func (at AttrType) Size() int {
-	return map[AttrType]int{
-		Int:   4,
-		Float: 4,
-		Vec2:  2 * 4,
-		Vec3:  3 * 4,
-		Vec4:  4 * 4,
-		Mat2:  2 * 2 * 4,
-		Mat23: 2 * 3 * 4,
-		Mat24: 2 * 4 * 4,
-		Mat3:  3 * 3 * 4,
-		Mat32: 3 * 2 * 4,
-		Mat34: 3 * 4 * 4,
-		Mat4:  4 * 4 * 4,
-		Mat42: 4 * 2 * 4,
-		Mat43: 4 * 3 * 4,
-	}[at]
+	switch at {
+	case Int:
+		return 4
+	case Float:
+		return 4
+	case Vec2:
+		return 2 * 4
+	case Vec3:
+		return 3 * 4
+	case Vec4:
+		return 4 * 4
+	case Mat2:
+		return 2 * 2 * 4
+	case Mat23:
+		return 2 * 3 * 4
+	case Mat24:
+		return 2 * 4 * 4
+	case Mat3:
+		return 3 * 3 * 4
+	case Mat32:
+		return 3 * 2 * 4
+	case Mat34:
+		return 3 * 4 * 4
+	case Mat4:
+		return 4 * 4 * 4
+	case Mat42:
+		return 4 * 2 * 4
+	case Mat43:
+		return 4 * 3 * 4
+	default:
+		panic("size of vertex attribute type: invalid type")
+	}
 }