unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
I/O

I/O #

Operasi input/output (I/O) di Golang mencakup berbagai interaksi dengan sistem file, pembacaan dan penulisan data, serta komunikasi dengan jaringan. Golang menyediakan paket os, io, dan bufio untuk melakukan operasi I/O. Berikut adalah penjelasan dan contoh penggunaan operasi I/O utama di Golang.

Paket os #

Paket os digunakan untuk berinteraksi dengan sistem operasi. Ini mencakup operasi file seperti membuka, membaca, menulis, dan menutup file.

Membuka dan Membaca File #

package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "os"
)

func main() {
    // Membuka file
    file, err := os.Open("example.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    // Membaca isi file
    data, err := ioutil.ReadAll(file)
    if err != nil {
        log.Fatal(err)
    }

    // Menampilkan isi file
    fmt.Println(string(data))
}
package main

import (
    "log"
    "os"
)

func main() {
    // Membuka file dengan opsi menulis
    file, err := os.OpenFile("example.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    // Menulis data ke file
    _, err = file.WriteString("Hello, World!")
    if err != nil {
        log.Fatal(err)
    }
}

Paket io #

Paket io menyediakan fungsi dasar untuk operasi I/O, seperti pembacaan dan penulisan.

Menyalin Data #

package main

import (
    "io"
    "log"
    "os"
)

func main() {
    srcFile, err := os.Open("source.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer srcFile.Close()

    destFile, err := os.Create("destination.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer destFile.Close()

    // Menyalin data dari source.txt ke destination.txt
    _, err = io.Copy(destFile, srcFile)
    if err != nil {
        log.Fatal(err)
    }
}

Membaca Data #

package main

import (
    "fmt"
    "io"
    "strings"
)

func main() {
    reader := strings.NewReader("Hello, Go!")

    buf := make([]byte, 4)
    for {
        n, err := reader.Read(buf)
        if err == io.EOF {
            break
        }
        fmt.Printf("Read %d bytes: %s\n", n, string(buf[:n]))
    }
}

Paket bufio #

Paket bufio menyediakan buffering untuk I/O yang lebih efisien, terutama untuk operasi yang sering membaca atau menulis data.

Membaca File dengan Buffer #

package main

import (
    "bufio"
    "fmt"
    "log"
    "os"
)

func main() {
    file, err := os.Open("example.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    // Membuat buffered reader
    reader := bufio.NewReader(file)
    for {
        line, err := reader.ReadString('\n')
        if err != nil {
            break
        }
        fmt.Print(line)
    }
}
package main

import (
    "bufio"
    "log"
    "os"
)

func main() {
    file, err := os.Create("example.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    // Membuat buffered writer
    writer := bufio.NewWriter(file)
    _, err = writer.WriteString("Hello, Buffered World!\n")
    if err != nil {
        log.Fatal(err)
    }

    // Memastikan semua data ditulis
    writer.Flush()
}

Contoh Lengkap #

Berikut adalah contoh lengkap yang mencakup pembacaan dan penulisan file dengan menggunakan paket os, io, dan bufio.

package main

import (
    "bufio"
    "fmt"
    "io"
    "log"
    "os"
)

func main() {
    // Membuka file untuk dibaca
    srcFile, err := os.Open("source.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer srcFile.Close()

    // Membuat file baru untuk menulis
    destFile, err := os.Create("destination.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer destFile.Close()

    // Menyalin data dari source.txt ke destination.txt
    _, err = io.Copy(destFile, srcFile)
    if err != nil {
        log.Fatal(err)
    }

    // Membuka kembali file destination.txt untuk membaca
    destFile, err = os.Open("destination.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer destFile.Close()

    // Membaca isi file destination.txt dengan buffered reader
    reader := bufio.NewReader(destFile)
    for {
        line, err := reader.ReadString('\n')
        if err == io.EOF {
            break
        }
        fmt.Print(line)
    }
}

Kesimpulan #

Operasi I/O di Golang mencakup berbagai interaksi dengan sistem file, pembacaan dan penulisan data, serta komunikasi dengan jaringan. Dengan menggunakan paket os, io, dan bufio, Anda dapat melakukan berbagai operasi I/O dengan efisien dan aman. Pemahaman yang baik tentang cara kerja operasi I/O ini sangat penting untuk mengembangkan aplikasi yang membutuhkan interaksi dengan data eksternal atau sistem file.

« Goroutine
Socket »