// 4. hét – Karakterkódolás Go-ban: bájt, rune, UTF-8
// Futtatás: go run ./h04/encoding
package main

import (
	"fmt"
	"unicode/utf8"
)

func main() {
	s := "Aé世😀"

	// A Go string UTF-8 kódolású bájtsorozat.
	fmt.Println("len(s)                 =", len(s))                    // 10 bájt
	fmt.Println("utf8.RuneCountInString =", utf8.RuneCountInString(s)) // 4 karakter

	// range a stringen RUNE-okat (kódpontokat) ad, a bájtindexszel együtt
	for i, r := range s {
		fmt.Printf("  bájtindex %d: %c  U+%04X  (%d bájt)\n", i, r, r, utf8.RuneLen(r))
	}

	// Indexelés bájtot ad – egy több bájtos karakter "közepébe" is indexelhetünk!
	fmt.Print("bájtonként: ")
	for i := 0; i < len(s); i++ {
		fmt.Printf("%02X ", s[i])
	}
	fmt.Println()

	// Biztonságos karakterenkénti feldolgozás: []rune
	r := []rune(s)
	fmt.Println("[]rune hossza:", len(r), ", r[2] =", string(r[2]))

	// ASCII aritmetika
	c := 'c'
	fmt.Println("'c' - 'a' =", c-'a', "  '7' - '0' =", '7'-'0')
}
