package main

import (
	"fmt"
	"strings"
)

// kataBench adalah data tetap yang dipakai benchmark agar kedua fungsi
// diukur dengan input yang sama dan hasilnya dapat dibandingkan.
var kataBench = []string{"belajar ", "pengujian ", "di ", "bahasa ", "go"}

// GabungDenganPlus menggabungkan potongan kata memakai operator += .
// Setiap penyambungan membuat string baru, sehingga alokasi memori bertambah.
func GabungDenganPlus(kata []string) string {
	hasil := ""
	for _, k := range kata {
		hasil += k
	}
	return hasil
}

// GabungDenganBuilder menggabungkan potongan kata memakai strings.Builder
// yang menampung data di satu buffer sebelum dialokasikan menjadi string final.
func GabungDenganBuilder(kata []string) string {
	var b strings.Builder
	for _, k := range kata {
		b.WriteString(k)
	}
	return b.String()
}

func main() {
	fmt.Println(GabungDenganPlus(kataBench))
	fmt.Println(GabungDenganBuilder(kataBench))
}
