From 9f44ced7f9814ba29bd31f76c07c9f0211b7d56b Mon Sep 17 00:00:00 2001 From: ahmad alfandi Date: Wed, 9 Jul 2025 00:04:36 +0700 Subject: [PATCH] chore: menambahkan tipe data byte --- intermediate/tipe_data/06_byte/README.md | 60 +++++++++++++++++++ intermediate/tipe_data/06_byte/contoh_byte.go | 22 +++++++ 2 files changed, 82 insertions(+) create mode 100644 intermediate/tipe_data/06_byte/README.md create mode 100644 intermediate/tipe_data/06_byte/contoh_byte.go diff --git a/intermediate/tipe_data/06_byte/README.md b/intermediate/tipe_data/06_byte/README.md new file mode 100644 index 0000000..9d8814d --- /dev/null +++ b/intermediate/tipe_data/06_byte/README.md @@ -0,0 +1,60 @@ +# Byte Golang + +Dalam bahasa Go, **`byte`** adalah tipe data yang sangat penting untuk menangani **data biner** dan **karakter berbasis ASCII**. `byte` merupakan **alias dari `uint8`**, yang artinya ia adalah **bilangan bulat 8-bit tanpa tanda**, dengan nilai dari **0 hingga 255**. +`byte` biasa digunakan dalam pengolahan teks ASCII, buffer data, komunikasi jaringan, encoding, serta pembacaan/penulisan file. + +--- + +## **Byte Literal (Karakter ASCII)** + +```go +package main + +import ( + "fmt" + "reflect" +) + +func main() { + var b byte = 'A' // Karakter ASCII untuk A = 65 + + // menampilkan byte dan tipe nya + fmt.Printf("byte: %c; nilai: %d; tipe: %s\n", b, b, reflect.TypeOf(b)) +} +``` + +## **Byte Literal** + +- Literal `byte` dapat didefinisikan dari: + - **Angka**: `var b byte = 65` + - **Karakter ASCII**: `var b byte = 'A'` +- Tipe data byte **tidak bisa menggunakan Unicode kompleks atau emoji** seperti `'你'` atau `'😊'` karena nilainya di luar jangkauan `byte`. + +--- + +## **Byte dalam Slice (`[]byte`)** + +Go menggunakan slice of bytes (`[]byte`) untuk representasi data teks dan file: + +```go +package main + +import "fmt" + +func main() { + data := []byte("Hello") // Konversi string ke byte slice + fmt.Println(data) // Output: [72 101 108 108 111] +} +``` + +--- + +## **Byte vs Rune** + +| Aspek | `byte` (`uint8`) | `rune` (`int32`) | +| ------------- | --------------------------- | ------------------------------- | +| Ukuran | 8-bit | 32-bit | +| Rentang Nilai | 0 – 255 | -2.1 miliar – +2.1 miliar | +| Representasi | Karakter ASCII / Data biner | Karakter Unicode | +| Kegunaan Umum | File, jaringan, ASCII | Teks multibahasa, simbol, emoji | +| Slice Umum | `[]byte` | `[]rune` | diff --git a/intermediate/tipe_data/06_byte/contoh_byte.go b/intermediate/tipe_data/06_byte/contoh_byte.go new file mode 100644 index 0000000..8e77178 --- /dev/null +++ b/intermediate/tipe_data/06_byte/contoh_byte.go @@ -0,0 +1,22 @@ +package main + +import ( + "fmt" + "reflect" +) + +func main() { + // membuat byte + var b byte + b = 200 + fmt.Printf("byte: %c; nilai: %d; tipe: %s\n", b, b, reflect.TypeOf(b)) + var b2 byte + b2 = 'C' + fmt.Printf("byte: %c; nilai: %d; tipe: %s\n", b2, b2, reflect.TypeOf(b2)) + + // membuat bytes (sekumpulan data byte) + var bs []byte + bs = []byte{72, 101, 108, 108, 111} + fmt.Println("bytes", reflect.TypeOf(bs)) + fmt.Println("bytes menjadi string ->", string(bs)) +}