Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penjelasan terperinci tentang operasi I/O dalam bahasa Go

Penjelasan terperinci tentang operasi I/O dalam bahasa Go

PHPz
PHPzasal
2024-03-28 13:15:04855semak imbas

Penjelasan terperinci tentang operasi I/O dalam bahasa Go

Bahasa Go ialah bahasa pengaturcaraan sumber terbuka yang dibangunkan oleh Google Ia direka untuk menumpukan pada kesederhanaan, kecekapan dan prestasi serentak. Dalam bahasa Go, operasi I/O ialah bahagian yang sangat biasa dan penting Artikel ini akan memperkenalkan secara terperinci operasi I/O dalam bahasa Go, termasuk membaca dan menulis fail, komunikasi rangkaian, dsb., dan menyediakan contoh kod khusus. .

Membaca dan menulis fail

Membaca fail

Dalam bahasa Go, anda boleh menggunakan fungsi os.Open untuk membuka fail untuk operasi membaca Kod sampel adalah seperti berikut: os.Open函数打开一个文件进行读取操作,示例代码如下:

package main

import (
    "fmt"
    "os"
)

func main() {
    file, err := os.Open("sample.txt")
    if err != nil {
        fmt.Println("文件打开失败:", err)
        return
    }
    defer file.Close()

    buf := make([]byte, 1024)
    n, err := file.Read(buf)
    if err != nil {
        fmt.Println("文件读取失败:", err)
        return
    }

    fmt.Println(string(buf[:n]))
}

文件写入

使用os.Create函数创建一个新文件进行写入操作,示例代码如下:

package main

import (
    "fmt"
    "os"
)

func main() {
    file, err := os.Create("output.txt")
    if err != nil {
        fmt.Println("文件创建失败:", err)
        return
    }
    defer file.Close()

    data := []byte("Hello, World!")
    _, err = file.Write(data)
    if err != nil {
        fmt.Println("文件写入失败:", err)
        return
    }

    fmt.Println("文件写入成功")
}

网络通信

TCP服务器

使用net包可以很方便地实现TCP服务器,示例代码如下:

package main

import (
    "fmt"
    "net"
)

func handleConnection(conn net.Conn) {
    defer conn.Close()

    buf := make([]byte, 1024)
    n, err := conn.Read(buf)
    if err != nil {
        fmt.Println("读取数据失败:", err)
        return
    }

    fmt.Println("接收到客户端数据:", string(buf[:n]))
}

func main() {
    listener, err := net.Listen("tcp", "localhost:8888")
    if err != nil {
        fmt.Println("TCP服务器启动失败:", err)
        return
    }
    defer listener.Close()

    fmt.Println("TCP服务器启动成功,监听端口8888")

    for {
        conn, err := listener.Accept()
        if err != nil {
            fmt.Println("接受连接失败:", err)
            continue
        }

        go handleConnection(conn)
    }
}

TCP客户端

使用net

package main

import (
    "fmt"
    "net"
)

func main() {
    conn, err := net.Dial("tcp", "localhost:8888")
    if err != nil {
        fmt.Println("连接服务器失败:", err)
        return
    }
    defer conn.Close()

    data := []byte("Hello, Server!")
    _, err = conn.Write(data)
    if err != nil {
        fmt.Println("发送数据失败:", err)
        return
    }

    fmt.Println("发送数据成功")
}

Fail menulis

Gunakan fungsi os.Create untuk mencipta fail baharu untuk operasi menulis Kod sampel adalah seperti berikut: 🎜rrreee🎜Komunikasi rangkaian🎜🎜Pelayan TCP🎜🎜Menggunakan net<. pakej> boleh menjadi sangat mudah Untuk melaksanakan pelayan TCP, kod sampel adalah seperti berikut: 🎜rrreee🎜Pelanggan TCP🎜🎜Menggunakan pakej net, anda juga boleh melaksanakan klien TCP kod adalah seperti berikut: 🎜rrreee🎜Di atas adalah mengenai operasi I/O dalam bahasa Go Pengenalan terperinci dan contoh kod khusus. Saya harap ia akan membantu pembaca Selamat datang untuk terus memberi perhatian kepada lebih banyak artikel tentang bahasa Go. 🎜

Atas ialah kandungan terperinci Penjelasan terperinci tentang operasi I/O dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn